Winform app没有关闭

时间:2010-06-21 12:00:50

标签: c# winforms

我有一个小应用程序,客户端用来手动更新某些数据。这是非常基本的;在加载时,它会填充用户可以选择的公司列表,然后单击按钮以更新另一个系统中的数据。客户端希望能够从命令行运行相同的功能,因此我添加了后台工作程序。当应用程序启动时,我检查一个特定的arg,如果发现我启动了工作人员。一旦工人完成,我调用Close();

这一切似乎工作正常(数据按预期更新,应用程序似乎关闭),但当我检查任务管理器时,应用程序仍在运行。

我的问题:

  1. 我应该寻找什么东西/东西来找到应用程序的原因仍在运行?
  2. 有更好的方法吗?
  3. 以下是代码示例:

    public MainForm()
            {
                InitializeComponent();
    
                var args = Environment.GetCommandLineArgs();
                Array.ForEach(args, x => x.ToLower());
    
               if (args.Contains("u"))
                    backgroundWorker.RunWorkerAsync();
    
            }
     private void BackgroundWorkerDoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
            {
               //call to web service to update data
            }
    
     private void BackgroundWorkerRunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
            {
               Close();
            }
    

3 个答案:

答案 0 :(得分:3)

  

2)有更好的方法吗?

您可以从Console App运行代码,并确保没有WinForms / Threading问题。

作为对此的修改,您可以直接在Main()中检查命令行,甚至不执行Application.Run(mainForm)。

答案 1 :(得分:0)

尝试调用Application.Exit(),而不是调用Close()。这将结束应用程序,而不仅仅是关闭表单。

答案 2 :(得分:0)

backgroundworker在另一个线程中,而不是UI线程。

在UI线程中创建一个处理东西(在这种情况下停止)的委托。 Example here