Завершение асинхронных потоков делегатов, когда не завершено - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть код 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 Ответ

2 голосов
/ 21 февраля 2012

Ваш класс dlgCardLimit должен иметь другой метод, который позволил бы изящно отменить ожидающую операцию, например Отмена или Закрытие, чтобы дать возможность для Изящной обработки ошибки. Нить, на которой это работает, скрыта от вас.

Проверьте Socket.EndReceive для аналогичного шаблона при отмене ожидающей операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...