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() и снова выполню, все будет хорошо, но если мне придется ждать, пока моя задача будет выполнена, бесполезно вызывать метод асинхронно.
РЕДАКТИРОВАТЬ
Я также настроил ссылку на службу, чтобы она позволяла генерировать асинхронные операции. Та же проблема.