C#中 没有循环的异步操作如何中止

private async Task CheckServer()
{

        SqlConnection mySqlConnection = new SqlConnection();
        mySqlConnection.ConnectionString = UserInfo.Session.ConnectString1;
        try
        {
            await Task.Run(() => mySqlConnection.Open());
            mySqlConnection.Close();
            UserInfo.Session.PublicIP = await UtilConv.GetPublicIP();
        }
        catch (Exception)
        {
            return "远程服务器连接失败,请检查远程服务器设置";
        }
        return "1";
    }
            public async void CheckDB()
    {
                    var result= await CheckServer();
            }

3个回答

http://stackoverflow.com/questions/10134310/how-to-cancel-a-task-in-await
看第二个回答,调用者不再等待(无论task是否做完),直接返回

除了强行终止线程没有办法,但是既然是异步的,不存在阻塞,一般没有必要终止。调用判断canceltoken并且直接回馈给用户,已经超时的任务让它自然结束好了。

@caozhy 英语不太好,可以帮忙解释一下不

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问