C# 从另一个线程关闭main

C# 从另一个线程关闭main,c#,multithreading,C#,Multithreading,我正试图在另一条线结束时关闭应用程序。 我用的是c#。下面的代码只是一个示例 class main { constuctor { thread t = new thread(open loading screen); } public void open loading screen() { if (error) exit program application.exit(); // doesn't work this.C

我正试图在另一条线结束时关闭应用程序。 我用的是c#。下面的代码只是一个示例

class main
{
  constuctor
  {
    thread t = new thread(open loading screen);

  }

  public void open loading screen()
  {
    if (error) 
     exit program
      application.exit(); // doesn't work
     this.Close; // doesn't work
    thread.abort or mainform.abort doesnt work.
  }
}
如果我用application.exit在main上调用函数,这将不起作用,因为调用是从另一个线程进行的

那么,我如何退出该计划


提前感谢

工作线程应该设置一个变量或向主线程应该定期检查的某类事件发送信号-它可以在正常情况下关闭。

工作线程应该设置一个变量或向主线程应该定期检查的某类事件发送信号-它可以关闭以正常方式运行。

在主线程中使用IsAlive检查其他线程是否已结束,如果已结束则退出


在主线程中使用IsAlive检查其他线程是否已结束,如果已结束则退出


使用后台工作线程类而不是普通线程。backgroundworker可用于在UI线程以外的其他线程中执行工作。它还有一些方便的事件,可用于将进度更新发送回“拥有”线程。看看:


使用后台工作类而不是普通线程。backgroundworker可用于在UI线程以外的其他线程中执行工作。它还有一些方便的事件,可用于将进度更新发送回“拥有”线程。看看:


而且

在经历了一番痛击之后,我想我已经取得了一些进步。 我不是100%确定,但是你能在构造函数完成并加载主窗体之前退出应用程序吗

constuctor  {    thread t = new thread(open loading screen);  }
对于退出屏幕,我使用main for和另一个for之间的变量执行完全相同的操作。我在主应用程序中有一个出口,用于判断它是否返回true

在开始的时候,我有一个加载屏幕,但是主窗体还没有加载,构造函数已经调用,构造函数还没有完成

还有一件事,所有的线程/类/加载//程序设置都应该在主构造函数中完成,如果是这样,请给出建议


谢谢

经过一番痛击,我想我已经取得了一些进步。 我不是100%确定,但是你能在构造函数完成并加载主窗体之前退出应用程序吗

constuctor  {    thread t = new thread(open loading screen);  }
对于退出屏幕,我使用main for和另一个for之间的变量执行完全相同的操作。我在主应用程序中有一个出口,用于判断它是否返回true

在开始的时候,我有一个加载屏幕,但是主窗体还没有加载,构造函数已经调用,构造函数还没有完成

还有一件事,所有的线程/类/加载//程序设置都应该在主构造函数中完成,如果是这样,请给出建议


谢谢

这是一行代码中的解决方案

mainForm.Invoke((MethodInvoker)(() => mainForm.Close()));

在mainform中有一个关闭事件,如果线程未自行关闭,则关闭该线程在此之后

这里是一行代码中的解决方案

mainForm.Invoke((MethodInvoker)(() => mainForm.Close()));
在mainform中有一个关闭事件,如果线程在此之后没有自行关闭,则关闭线程