C# 任务调用服务引用中的方法时ThreadAbortException

C# 任务调用服务引用中的方法时ThreadAbortException,c#,.net,service,task,threadabortexception,C#,.net,Service,Task,Threadabortexception,我需要调用名为CancelTransactionByRefPos的服务引用中的方法。 此方法具有以下签名: int CancelTransactionByRefPos(long refPos, out string resultDescription); 如果此方法返回“0”,则取消成功。如果此方法返回另一个值,则必须再次调用该方法 我已经编写了一个Cancel方法,它调用CancelTransactionByRefPos。调用异步进行非常重要,因为在给出响应之前可能需要30秒 我的方法如下所

我需要调用名为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的注释并再次执行时,一切都进行得很好,但是如果我必须等到我的任务被执行,那么调用异步方法是没有用的

编辑


我还配置了服务引用,因此它允许生成异步操作。同样的问题。

我在思考这个问题;但是,顺便提一下,如果让Cancel的调用方异步调用该方法,而不是在Cancel方法内部进行异步调用,会怎么样?我觉得这更符合逻辑。嗨,马库斯。我发现了问题所在。如果主线程结束,所有正在运行的任务都将中止。我有一个短时间运行的主线程,因为cancel方法是从单元测试方法调用的。谢谢你的回复!含糖的很高兴你明白了。