Как остановить или убить асинхронный делегат? - PullRequest
2 голосов
/ 04 июля 2011

Я вызываю асинхронный метод из основного потока. Как убить или остановить это. Благодарю. Это мои коды:

SendBroadcastTickerAsyncCaller caller = new SendBroadcastTickerAsyncCaller(SendBroadcastTickerAsync);
IAsyncResult result = caller.BeginInvoke(Floor, data,
                            new AsyncCallback(SendBroadcastTickerAsyncCallbackMethod), null);

SendBroadcastTickerAsyncCaller - это асинхронный делегат, а SendBroadcastTickerAsync - это асинхронный метод.

Пожалуйста, помогите мне, как убить (или остановить) это. Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Нужно убить себя, прекратив свое выполнение. Вы можете сказать ему сделать это, установив флаг, который он периодически проверяет, и если он был установлен, то он выходит из любого цикла, в котором он находится. Вам нужно будет пометить логический флаг как энергозависимый, чтобы оба потока видели живое значение .

Уничтожение потока другими способами возможно, но обычно (никогда?) Не подходит.

0 голосов
/ 04 июля 2011

Если на сервере не выставлен метод kill, вы, вероятно, можете установить только BOOL, который вы проверяете в обратном вызове, и если true, ничего не делать.

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