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);
    }
}