【问题标题】:FTP-Framework - Downloading file async - Callback, Delegate, Thread, BackgroundWorker, Exception inner ThreadFTP-Framework - 下载文件异步 - 回调、委托、线程、BackgroundWorker、异常内线程
【发布时间】:2012-08-08 07:32:59
【问题描述】:

我正在编写一个 FTPS 框架。用户(使用我的框架的程序员)应该可以异步下载文件(在另一个 Thread 中)。所以,我的大问题是,程序员无法处理Exceptions 中抛出的DownloadFile-transfer-Thread 中的方法: - 当我要求AsyncCallback 告诉程序下载传输完成时,“他”如何处理Exceptions(来自他的Thread)?
- BackgroundWorker也有同样的问题,另外程序员要给我RunWorkerCompletedEventHandler(object, RunWorkerCompletedEventArgs)

谢谢!

【问题讨论】:

    标签: c# multithreading exception exception-handling


    【解决方案1】:

    自 .NET 2.0 以来,有两种公开异步 API 的选项:

    The Asynchronous Programming Model - 支持更多后端/库代码。

    The Event-based Asynchronous Pattern - 当您的代码将在 UI 中使用时受到青睐。

    在 .NET 4 中,您现在还拥有“基于任务的异步模式”(TAP):

    Simplify Asynchronous Programming with Tasks

    如果可以,我会选择 TAP - 它是三者中最好的,可以解决异常处理等问题。

    【讨论】:

    • 不客气。你读过Joe Albahari's free ebook吗?
    • 在许多文章中写到,当我使用EndInvoke 方法时,Exception 将被重新抛出。但是我的下载文件方法不要等待,在我无法控制的线程中抛出Exception,在这种情况下全局Exception 是一个坏主意。我认为Exception 可以“等待”直到我打电话给EndInvoke 并把它扔在那里???
    猜你喜欢
    • 2010-12-22
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多