当前位置: 首页 > 编程语言 > C#

仅当任务未在指定时间内完成时才显示进度对话框分享

时间:2023-04-10 22:46:47 C#

C#学习教程:仅在任务未在指定时间内完成时显示进度对话框我想要做的是显示一个进度对话框,但前提是上传操作需要超过2秒。上传完成后,我想关闭进度对话框。我使用Task/ContinueWith做了一个粗略的解决方案,但我希望有更“优雅”的方式。我如何使用异步/等待来实现这一点?也许是这样?varuploadTask=service.UploadAsync(imagePath);vardelayTask=Task.Delay(1000);//你的延迟在这里awaituploadTask;//等待上传完成//隐藏进度HideProgress();我想我仍然会发布我的解决方案,因为它解释了如何显示和关闭模态对话框。它适用于WPF,但同样的概念也适用于WinForms。以上是C#学习教程:只有在指定时间内没有完成任务时,才会显示进度对话框分享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——privateasyncvoidOpenCommand_Executed(objectsCommand,ExecutedRoutedEventArgseCommand){//启动worker任务varworkerTask=Task.Run(()=>{//工作至少需要5sThread.Sleep(5000);});//启动定时器任务vartimerTask=Task.Delay(2000);vartask=awaitTask.WhenAny(workerTask,ti??merTask);if(task==timerTask){//创建对话框vardialogWindow=CreateDialog();//进入模式varmodalityTcs=newTaskCompletionSource();dialogWindow.Loaded+=(s,e)=>modalityTcs.SetResult(true);vardialogTask=Dispatcher.InvokeAsync(()=>dialogWindow.ShowDialog());等待modalityTcs.Task;//我们现在在模态对话框Dispatcher框架上//主窗口UI已被禁用//现在等待workertaskawaitworkerTask;//worker任务完成,关闭对话框dialogWindow.Close();等待对话任务;//我们回到主Dispatcher框架UI线程之论}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: