2012-02-21 49 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以取消未決操作中的類似模式。