mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-29 15:19:12 +08:00
Fix upload thread bug
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CS7035</NoWarn>
|
||||
<AvaloniaVersion>11.3.9</AvaloniaVersion>
|
||||
<AvaloniaVersion>11.3.10</AvaloniaVersion>
|
||||
<AtomUIVersion>5.1.3-build.3</AtomUIVersion>
|
||||
<AtomUIGalleryVersion>5.1.3-build.3</AtomUIGalleryVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -57,8 +57,11 @@ internal class FileUploadScheduler : IFileUploadScheduler
|
||||
|
||||
var progress = new Progress<FileUploadProgress>(report =>
|
||||
{
|
||||
task.Progress = report.Percentage;
|
||||
task.UploadProgressHandler?.Invoke(task.Id, task.UploadFileInfo, task.Progress);
|
||||
Dispatcher.UIThread.InvokeAsync(() =>
|
||||
{
|
||||
task.Progress = report.Percentage;
|
||||
task.UploadProgressHandler?.Invoke(task.Id, task.UploadFileInfo, task.Progress);
|
||||
});
|
||||
});
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
@@ -66,7 +69,6 @@ internal class FileUploadScheduler : IFileUploadScheduler
|
||||
FileUploadResult? result = null;
|
||||
try
|
||||
{
|
||||
task.Status = FileUploadStatus.Uploading;
|
||||
result = await _transport.UploadAsync(
|
||||
task.UploadFileInfo,
|
||||
task.Context,
|
||||
|
||||
@@ -312,8 +312,6 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
uploadTaskInfo.IsImageFile = IsImageFile(uploadFile);
|
||||
uploadTaskInfo.UploadTask = task;
|
||||
uploadTaskInfo.FilePath = uploadFile.FilePath;
|
||||
|
||||
_allTaskList.Add(uploadTaskInfo);
|
||||
|
||||
if (TaskInfoList.Count > 0 && TaskInfoList.Count == MaxCount)
|
||||
{
|
||||
@@ -325,6 +323,7 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
await CancelAllUploadTaskAsync();
|
||||
}
|
||||
|
||||
_allTaskList.Add(uploadTaskInfo);
|
||||
UploadTaskCreated?.Invoke(this, new UploadTaskCreatedEventArgs(task.Id, uploadFile));
|
||||
var aboutToSchedulingEvent = new UploadTaskAboutToSchedulingEventArgs(task.Id, uploadFile);
|
||||
UploadTaskAboutToScheduling?.Invoke(this, aboutToSchedulingEvent);
|
||||
@@ -361,11 +360,14 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
|
||||
private void HandleUploadProgressChanged(Guid taskId, UploadFileInfo fileInfo, double progress)
|
||||
{
|
||||
var taskInfo = TaskInfoList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
var taskInfo = _allTaskList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
if (taskInfo != null)
|
||||
{
|
||||
SetCurrentValue(IsTaskRunningProperty, true);
|
||||
taskInfo.Status = FileUploadStatus.Uploading;
|
||||
if (taskInfo.Status == FileUploadStatus.Pending)
|
||||
{
|
||||
taskInfo.Status = FileUploadStatus.Uploading;
|
||||
}
|
||||
taskInfo.Progress = progress;
|
||||
UploadTaskProgress?.Invoke(this, new UploadTaskProgressEventArgs(taskId, fileInfo, progress));
|
||||
}
|
||||
@@ -373,7 +375,7 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
|
||||
private void HandleUploadCompleted(Guid taskId, UploadFileInfo uploadFileInfo, FileUploadResult result)
|
||||
{
|
||||
var taskInfo = TaskInfoList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
var taskInfo = _allTaskList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
if (taskInfo != null)
|
||||
{
|
||||
taskInfo.Status = FileUploadStatus.Success;
|
||||
@@ -384,7 +386,7 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
|
||||
private void HandleUploadFailed(Guid taskId, UploadFileInfo uploadFileInfo, FileUploadResult result)
|
||||
{
|
||||
var taskInfo = TaskInfoList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
var taskInfo = _allTaskList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
if (taskInfo != null)
|
||||
{
|
||||
taskInfo.Status = FileUploadStatus.Failed;
|
||||
@@ -396,7 +398,7 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
|
||||
private void HandleUploadCancelled(Guid taskId, UploadFileInfo uploadFileInfo, FileUploadResult result)
|
||||
{
|
||||
var taskInfo = TaskInfoList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
var taskInfo = _allTaskList.FirstOrDefault(x => x.TaskId == taskId);
|
||||
if (taskInfo != null)
|
||||
{
|
||||
taskInfo.Status = FileUploadStatus.Cancelled;
|
||||
@@ -409,7 +411,7 @@ public class Upload : ContentControl, IMotionAwareControl, IControlSharedTokenRe
|
||||
private void CheckTaskRunning()
|
||||
{
|
||||
var isTaskRunning = false;
|
||||
foreach (var uploadTaskInfo in TaskInfoList)
|
||||
foreach (var uploadTaskInfo in _allTaskList)
|
||||
{
|
||||
if (uploadTaskInfo.Status == FileUploadStatus.Uploading)
|
||||
{
|
||||
|
||||
@@ -92,6 +92,7 @@ public class UploadDefaultDropArea : TemplatedControl, IMotionAwareControl
|
||||
{
|
||||
area.HandleDrop(args);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void HandleDrop(DragEventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user