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

Iga*_*nik 6 .net c# task-parallel-library async-await

我有一个上传图像的小服务,我这样使用它:

ImageInfo result = await service.UploadAsync(imagePath);
Run Code Online (Sandbox Code Playgroud)

我想要做的是显示进度对话框,但前提是上传操作需要超过2秒.上传完成后,我想关闭进度对话框.

我使用Task/ContinueWith做了一个粗略的解决方案,但我希望有一种更"优雅"的方式.

我怎样才能实现这个目的async/await

Sri*_*vel 4

可能是这样的吗?

var uploadTask = service.UploadAsync(imagePath);
var delayTask = Task.Delay(1000);//Your delay here
if (await Task.WhenAny(new[] { uploadTask, delayTask }) == delayTask)
{
    //Timed out ShowProgress
    ShowMyProgress();
    await uploadTask;//Wait until upload completes
    //Hide progress
    HideProgress();
}
Run Code Online (Sandbox Code Playgroud)