C# 窗体关闭并重新打开,抛出 "cannot access a disposed object"
C# Form closes and reopens, throws "cannot access a disposed object"
我有一个启动新表单的按钮,这个按钮 运行 是一个异步任务。当我关闭表单并再次单击按钮时,它会抛出“无法访问已处置的对象”。这是伪代码。
private async void button_click(object sender, EventArgs e)
{
await work();
}
private async Task work()
{
form.show();
while(true)
{
await Task.Run(async () => sendData(data1, data2)); // this just sends some data to the new form
await Task.Delay(1000);
}
}
第二种形式只显示发送的数据。当表单关闭时,我不需要在后台 运行。我是异步方法的新手,所以不确定如何解决这个问题..
当您关闭表单时,它会被处理掉。您需要在您的 worker 中初始化一个新表单。
private async Task work()
{
Form form = new Form();
form.Show()
while(true)
{
await Task.Run(async () => sendData(data1, data2)); // this just sends some data to the new form
await Task.Delay(1000);
}
}
我有一个启动新表单的按钮,这个按钮 运行 是一个异步任务。当我关闭表单并再次单击按钮时,它会抛出“无法访问已处置的对象”。这是伪代码。
private async void button_click(object sender, EventArgs e)
{
await work();
}
private async Task work()
{
form.show();
while(true)
{
await Task.Run(async () => sendData(data1, data2)); // this just sends some data to the new form
await Task.Delay(1000);
}
}
第二种形式只显示发送的数据。当表单关闭时,我不需要在后台 运行。我是异步方法的新手,所以不确定如何解决这个问题..
当您关闭表单时,它会被处理掉。您需要在您的 worker 中初始化一个新表单。
private async Task work()
{
Form form = new Form();
form.Show()
while(true)
{
await Task.Run(async () => sendData(data1, data2)); // this just sends some data to the new form
await Task.Delay(1000);
}
}