sea*_*nhc 5 c# async-await windows-runtime
在Win8中,我使用somefile.CopyAsync(destFolder,newName)来复制文件.但是当我尝试取消它时,它似乎不起作用.这两种方法是我尝试取消它的方法:
只需使用IAsyncOperation.Cancel
var op = somefile.CopyAsync(destFoder, newName);
op.Cancel();
op.Complete = (x,y) =>
{
switch(y) {
case AsyncStatus.Complete:
Debug.WriteLine("Completed" + x.GetResults().Name);
break;
case AsyncStatus.Cancel:
Debug.WriteLine("Canceled")
break;
}
}
Run Code Online (Sandbox Code Playgroud)使用AsTask(CancellationToken)
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(1));
var op = somefile.CopyAsync(destFolder, newName).AsTask(cts.Token);
await op;
Run Code Online (Sandbox Code Playgroud)在第一种方法中,情况AsyncStatus.Cancel没有被调用,而在第二种方法中,没有任何事情发生.我还有其他方法可以尝试吗?谢谢!
你试过这个吗...
var task = file.CopyAsync(KnownFolders.DocumentsLibrary, "test").AsTask();
task.AsAsyncAction().Cancel();
Run Code Online (Sandbox Code Playgroud)
它在我的简单测试中有效。
如果您想使用取消令牌,此代码也应该有效
var source = new CancellationTokenSource(TimeSpan.FromMilliseconds(500));
var token = source.Token;
token.Register(() => { Debug.WriteLine("Your cancellation code here"); });
var task = file.CopyAsync(KnownFolders.DocumentsLibrary, "test").AsTask(token);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
828 次 |
最近记录: |