2012-02-21 50 views
3

我有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. 
    } 

在“其他”的情况下,我怎么能终止IAsyncResult的指向线程?

+0

我假设你想从非UI工作线程弹出一个对话框/窗口,并在没有使用响应时关闭它。这段代码是否适合你?它是否显示dlg窗口?你如何与UI线程同步? – 2012-02-21 09:45:39

回答

2

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

检出Socket.EndReceive以取消未决操作中的类似模式。