小编sea*_*nhc的帖子

有没有办法取消StorageFile.CopyAsync()?

在Win8中,我使用somefile.CopyAsync(destFolder,newName)来复制文件.但是当我尝试取消它时,它似乎不起作用.这两种方法是我尝试取消它的方法:

  1. 只需使用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)
  2. 使用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没有被调用,而在第二种方法中,没有任何事情发生.我还有其他方法可以尝试吗?谢谢!

c# async-await windows-runtime

5
推荐指数
1
解决办法
828
查看次数

标签 统计

async-await ×1

c# ×1

windows-runtime ×1