我正在研究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
}
}
答案 0 :(得分:3)
HubConn.close()解决了问题并且它停止了conAsync().....我认为取消令牌不是解决方案(我错了)但它可能会有所帮助,看起来也很专业。