作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个客户用来手动更新一些数据的小应用程序。这是非常基本的;在加载时,它会填充一个公司列表,用户可以从中选择并单击一个按钮来更新另一个系统中的数据。客户希望能够从命令行运行同样的功能,所以我添加了一个后台 worker 。当应用程序启动时,我会检查一个特定的 arg,如果找到我会启动 worker。工作人员完成后,我调用 Close();
这一切似乎工作正常(数据按预期更新并且应用程序似乎关闭),但当我检查任务管理器时应用程序仍在运行。
我的问题:
这是代码示例:
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();
}
最佳答案
2) Is there a better way to do this?
您可以从控制台应用程序运行代码并确保没有 WinForms/线程问题。
作为其变体,您可以直接在 Main() 中检查命令行,甚至不执行 Application.Run(mainForm)。
关于c# - Winform 应用程序未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3084401/
我是一名优秀的程序员,十分优秀!