c#.net停止运行异步方法

时间:2017-06-20 07:43:27

标签: c# async-await signalr

我正在研究signalR。我有一个服务器(ASP .NET)和一个客户端(C#WinForms)。 在我的客户端应用程序中,我有一个异步方法:

public async void conAsync()
{
    HubConn = new HubConnection(serverURL);
    HubPrx = HubConn.CreateHubProxy("myHUB");

    try
    {
        await HubConn.Start();
        richTextBox1.AppendText("connected");
        button1.BackColor = Color.Green;

        groupBox1.Enabled = true;
        groupBox2.Enabled = true;        
    }
    catch(Exception err)
    {
        // deactive comps
        groupBox1.Enabled = false;
        groupBox2.Enabled = false;        

        richTextBox1.AppendText(err.toString());
    }
}

开始Button执行上述方法。 我想提供一个Stop Button来停止与服务器的连接。我读到了CancellationToken,但我对如何在我的案例中使用它感到困惑。 实际上我的按钮是CheckBox,其行为类似于ToggleButton

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        checkBox1.ForeColor = Color.Green;
        conAsync();
    }
    else
    {
        //stop conAsync() here
    }
}

1 个答案:

答案 0 :(得分:3)

HubConn.close()解决了问题并且它停止了conAsync().....我认为取消令牌不是解决方案(我错了)但它可能会有所帮助,看起来也很专业。