别低头 王冠会掉 2024-06-05 12:38 采纳率: 33.3%
浏览 15

调用7z来解压中途想取消怎么办呢(语言-c#)


            tmp = new SevenZipExtractor(url);
            tmp.FileExtractionFinished += new EventHandler<FileInfoEventArgs>(extr_FileExtractionFinished);
            tmp.BeginExtractArchive(url);

调用7z来解压 中途想取消怎么办呢

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-05 12:38
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在C#中,如果你想要取消一个正在执行的异步操作,如使用SevenZipExtractor类的BeginExtractArchive方法解压文件,你通常需要依赖于该方法提供的取消机制。不幸的是,根据你提供的代码片段,BeginExtractArchive方法似乎没有直接提供取消操作的接口。

    不过,你可以考虑以下几种方法来实现取消解压的功能:

    1. 使用CancellationToken: 如果SevenZipExtractor类支持CancellationToken,你可以传递一个CancellationTokenBeginExtractArchive方法,并在需要时调用CancellationToken.Cancel()来取消操作。

    2. 使用任务并行库(TPL): 如果BeginExtractArchive方法返回一个Task对象,你可以使用TaskCancel方法来尝试取消操作。但请注意,这并不保证操作会立即停止,它只是请求取消操作。

    3. 轮询检查取消标志: 如果以上方法都不可行,你可以考虑在解压过程中轮询一个取消标志,并在标志为真时中断解压过程。

    下面是一个使用CancellationToken的示例代码,假设SevenZipExtractor类支持CancellationToken

    CancellationTokenSource cts = new CancellationTokenSource();
    tmp = new SevenZipExtractor(url);
    tmp.FileExtractionFinished += new EventHandler<FileInfoEventArgs>(extr_FileExtractionFinished);
    tmp.BeginExtractArchive(url, cts.Token);
    
    // 某个时刻,如果需要取消解压
    cts.Cancel();
    

    如果SevenZipExtractor类不支持CancellationToken,你可能需要查看它的文档或者源代码,看是否有其他方式来实现取消功能。

    关于参考资料,由于SevenZipExtractor不是一个标准的.NET库中的类,我无法提供具体的链接。你可能需要查看你所使用的库的官方文档或者源代码来获取更多信息。

    如果SevenZipExtractor类来自一个第三方库,如SharpZipLibDotNetZip,通常这些库的文档或GitHub页面会有相关的示例和说明。

    最后,如果SevenZipExtractor类没有提供任何取消机制,你可能需要考虑使用其他支持取消操作的库,或者自己实现解压过程中的取消逻辑。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月5日