【发布时间】:2018-06-06 02:51:22
【问题描述】:
我正在努力理解Microsoft.VisualStudio.Workspace.PauseToken。
当我调用PauseTokenSource.Pause()时,方法暂停,任务完成,我可以看到“Completed”消息。
之后我打电话给PauseTokenSource.Resume(),任务继续。
但是这个过程完成后我没有消息。
两个问题:
- 为什么会这样?
- 我该如何解决?
我希望PauseToken 在工作期间不要中断任务。我不想在暂停后收到消息。我想在进程真正结束时收到消息。
public PauseToken PauseToken;
private async Task DoDoneAsync()
{
FlagCommandDone = true;
try
{
task = Task.Factory.StartNew(async () =>
{
double i = 0;
while (i < 3)
{
i++;
await PauseToken.WaitWhilePausedAsync();
Thread.Sleep(5000);
}
}
);
await task;
}
catch (Exception e)
{
isError = true;
message = e.Message;
}
if (!isError) message = task.IsCompleted ? "Completed" : "Canceled";
MessageBox.Show(message);
FlagCommandDone = false;
}
编辑:
task = Task.Factory.StartNew(async () =>
{
double i = 0;
while (i < 3)
{
i++;
CurrentStatus = i.ToString();
var a = (int)(double)((i / 3.0) * 100.0);
MessageBox.Show(PauseToken.IsPaused.ToString());
await PauseToken.WaitWhilePausedAsync();
CancellationToken.ThrowIfCancellationRequested();
Thread.Sleep(5000);
CurrentProgress = a;
}
}
, CancellationToken);
【问题讨论】:
标签: c# wpf async-await