未完成时终止异步委托线程

时间:2012-02-21 08:03:37

标签: c# multithreading delegates

我在这里有C#代码:

    dlgCardLimit dlg = new dlgCardLimit(GetCardLimit);
    IAsyncResult res = dlg.BeginInvoke(cardNo, null, null);
    res.AsyncWaitHandle.WaitOne(timeOut);
    if (res.IsCompleted)
    {
        cardLimit = dlg.EndInvoke(res);
    }
    else
    {
        //Terminate the async thread.
    }

在“Else”案例中,如何终止 IAsyncResult 指向的线程?

1 个答案:

答案 0 :(得分:2)

您的dlgCardLimit类应该有另一种允许正常取消挂起操作的方法,例如取消或关闭,以便有机会正常处理错误。正在运行它的线程对您是隐藏的。

在取消待处理操作时,检查Socket.EndReceive是否有类似的模式。