1

我目前有一个启动中央逻辑类的项目(它使用其他一些 .dll 来检查硬件或连接到数据库)。之后,将启动一个 WPF 表单。这种形式使用中心逻辑的信息。

目前,应用程序正在像这样启动:

public void StartTheWholeBunch()
{
    Thread thread = new Thread(() =>
    {
        applicationLogic = new ApplicationLogic();
        Application app = new Application();
        app.Run(new MainWindow(applicationLogic));
    });
    thread.IsBackground = true;
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();
    thread.Join();
}

MainWindow 是我要使用的两个 WPF 应用程序之一。因此,第二个将加入有趣的 oa 后期阶段。

当前设置正在运行。一切都相互沟通,没有问题。我只是想知道这个的使用Thread是否正确。当我离开applicationLogic = new ApplicationLogic();线程时,事情肯定会出错(例如,创建 MessageBox 弹出窗口时,整个应用程序将在此处冻结)。

我应该把所有东西都放在一个线程中吗?还是将所有内容拆分和/或创建线程池是更好的做法?我怎样才能以最好的方式接近呢?

4

1 回答 1

0

applicationLogic 应该无限期地运行。

我认为您正在混合对全局存在的类实例和线程的需求。你不需要一个单独的线程,你只需要ApplicationLogic成为一个单例。

public class ApplicationLogic
{
    private static ApplicationLogic _instance = new ApplicationLogic();
    public static ApplicationLogic Instance { get { return _instance; } }

    private ApplicationLogic() { }
}

此外,通过执行 immediate thread.Join();,您正在成为Thread一个有争议的问题。你不需要这个线程,只需启动主窗体。如果您想加载另一个表单,只需执行此操作,创建一个新实例并显示它:

var otherForm = new OtherForm();
otherForm.Show();

所以现在我们正在制作ApplicationLogic一个Singleton,这就是你对另一个线程所做的(有点),你可以像这样访问它:

ApplicationLogic.Instance.DoSomething();
于 2013-05-15T14:00:00.800 回答