ThreadAbortException, когда Задача вызывает метод в ссылке на службу

Мне нужно вызвать метод в Service Reference с именем CancelTransactionByRefPos. Этот метод имеет следующую подпись:

int CancelTransactionByRefPos(long refPos, out string resultDescription);

Если этот метод возвращает '0', отмена успешна. Если этот метод возвращает другое значение, метод должен быть вызван снова.

Я написал метод Cancel, который вызывает метод CancelTransactionByRefPos. Очень важно, что вызов происходит асинхронно, потому что это может занять 30 секунд, пока не будет дан ответ.

Мой метод выглядит так:

public void Cancel(long refPos, GiftCard giftCard, Account_3_2 account)
    {
       var task =  Task.Factory.StartNew(() =>
        {
            int result;
            do
            {
                string resultDescription;
                result = _client.CancelTransactionByRefPos(refPos, out resultDescription);
                // logic to log the result with the giftcard and account parameter
            } while (result != 0);
        });
        // task.Wait(); // ######## Uncomment this -> code executes! ######## 
    }

Когда я отменяю часть task.Wait() в комментарии, я получаю исключение ThreadAbortException.

Когда я раскомментирую task.Wait() и снова выполню, все будет хорошо, но если мне придется ждать, пока моя задача будет выполнена, бесполезно вызывать метод асинхронно.

РЕДАКТИРОВАТЬ

Я также настроил ссылку на службу, чтобы она позволяла генерировать асинхронные операции. Та же проблема.

0 ответов

Другие вопросы по тегам