【发布时间】:2018-06-27 21:08:11
【问题描述】:
我有一个我在 Visual Studio 2008 中开发的 C# dotnet 2.0 应用程序,它非常简单:
当我的进程 loop.exe 正在运行或停止时,我想将当前名为“label1”的标签名称更改为“正在运行”或“已停止”。
当我按下开始时,它会运行 loop.exe 并且停止按钮显然会停止它。
我已经阅读了很多关于 C# Winforms 的主题,但我无法让它工作,我不知道现在该怎么做。我认为我需要添加一个后台工作人员,但我不知道如何检查进程并以编程方式更新标签。
这是我的干净/当前代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace APP_NAME
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Start_Click(object sender, EventArgs e)
{
Process.Start("loop.exe");
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Process.Start("taskkill", "/F /IM loop.exe");
Process.Start("taskkill", "/F /IM azcopy.exe");
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
Process.Start("notepad.exe", @"C:\ProgramData\APP_NAME\settings\settings.xml");
}
private void button4_Click(object sender, EventArgs e)
{
Process.Start("explorer.exe", @"C:\ProgramData\APP_NAME\logs");
}
}
}
我希望我说清楚了,谢谢。
【问题讨论】:
-
您可以使用Process.GetProcessesByName每隔 X 秒采样一次 ""loop.exe" 以检查其状态
-
您好,有两个问题要问您,首先我假设您想将 label1 的文本更改为“正在运行”或“已停止”,而不是名称?其次,您的 loop.exe 完成后是否有一些输出或返回代码?
-
嗨,styx,我正在检查你的链接,谢谢。
-
S.Fragkos:没错,循环将永远运行,直到它被手动停止,所以无论如何都不会返回。
-
Process.Start() 有一个返回值,一个 Process 对象引用。你会喜欢它的 Exited 事件。
标签: c# visual-studio winforms backgroundworker