防止Task.ContinueWith异常

Eko*_*oms 5 .net c# task-parallel-library

如果第一部分失败,我试图阻止任务继续.

我的代码看起来像这样:

Task listener = Task.Factory.StartNew(openConnection).ContinueWith((t) => listenForNumber());

    void openConnection()
    {
        try
        {
           //stuff
        }
        catch
        {
          //morestuff
        }
    }

    void listenForNumber()
    {
       //even more stuff
    }
Run Code Online (Sandbox Code Playgroud)

现在,如果openConnection()进入catch块,则不应执行listenForNuber()

我试过了 ContinueWith((t) => listenForNumber(),TaskContinuationOptions.NotOnFaulted);

但没有成功,任何帮助?:(

谢谢

Shd*_*dNx 8

TaskContiuationOptions.NotOnFaulted 除非你的方法出现故障,否则显然没有任何效果,即在执行期间抛出的异常未处理.

在你的catch块中,你应该throw;在执行完工作之后使用语句重新抛出异常(并保留堆栈跟踪)(可能会进行一些清理) - 否则不会再抛出异常,所以你的方法不会被视为"故障".