Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Winforms基于正在运行的进程更改标签_C#_Visual Studio_Winforms_Backgroundworker - Fatal编程技术网

C#Winforms基于正在运行的进程更改标签

C#Winforms基于正在运行的进程更改标签,c#,visual-studio,winforms,backgroundworker,C#,Visual Studio,Winforms,Backgroundworker,我在Visual Studio 2008中开发了一个C语言的dotnet 2.0应用程序,非常简单: 当我的process loop.exe正在运行或停止时,我想将当前称为“label1”的标签名称更改为“正在运行”或“已停止” 当我按下start时,它将运行loop.exe,而stop按钮显然会停止它 我已经读了很多关于C#Winforms的主题,但我无法让它工作,我不知道现在该怎么办。我认为我需要添加一个backgroundworker,但我不知道如何检查流程并以编程方式更新标签 以下是我

我在Visual Studio 2008中开发了一个C语言的dotnet 2.0应用程序,非常简单:

当我的process loop.exe正在运行或停止时,我想将当前称为“label1”的标签名称更改为“正在运行”或“已停止”

当我按下start时,它将运行loop.exe,而stop按钮显然会停止它

我已经读了很多关于C#Winforms的主题,但我无法让它工作,我不知道现在该怎么办。我认为我需要添加一个backgroundworker,但我不知道如何检查流程并以编程方式更新标签

以下是我的干净/当前代码:

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");
        }

    }
}

我希望我说清楚了,谢谢

您可以通过访问标签的
text
属性来更新标签显示的文本。因此,请更改您的方法,如:

private void Start_Click(object sender, EventArgs e)
{
    Process.Start("loop.exe");
    label1.Text = "Running";
}

您可以每隔X秒对“loop.exe”进行一次采样,以使用问候语检查其状态,有两个问题要问您,首先我假设您想将label1的文本更改为“Running”或“Stopped”“,不是名字吗?第二,loop.exe完成后是否有一些输出或返回代码?嗨,styx,我正在检查你的链接,谢谢。S.Fragkos:是的,循环将永远运行,直到手动停止,所以不返回whatshover.Process.Start()有一个返回值,一个进程对象引用。你会喜欢它的退出事件。