C# - 从 button_click 终止线程进程

标签 c#

我正在尝试使用按钮单击事件来终止 notepad.exe。

因为process.WaitForExit()需要在一个线程中;

现在,点击按钮根本没有任何作用,不知道为什么。

在此先感谢您的帮助:)

这是我当前的代码:

using System.Windows;
using System.Threading;
using System.Diagnostics;


namespace WpfApp5
{
    public partial class MainWindow : Window
    {
        Thread mythread = new Thread(() =>
        {
            Process process = new Process();
            process.StartInfo.FileName = @"notepad.exe";
            process.Start();
            process.WaitForExit();
        });

        public MainWindow()
        {
            InitializeComponent();
            mythread.Start();   
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            mythread.Abort();
        }
    }
}

最佳答案

  1. 你不需要线程。您已经启动了一个单独的进程,它有自己的一组线程。
  2. 您需要做的就是卡在 process 上(例如,作为成员变量)并终止它。

例如:

public partial class MainWindow : Window
{
    private Process _process = null;

    public MainWindow()
    {
        InitializeComponent();
        _process = new Process();
        _process.StartInfo.FileName = @"notepad.exe";
        _process.Start();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        if (_process == null) return;
        _process.Kill();
        _process = null;
    }
}

关于C# - 从 button_click 终止线程进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284200/

相关文章:

c# - ASP.Net 中的自定义角色提供程序是否为使用 Windows 身份验证的每个用户实例化?

java - 在 Android 中通过 SSL 使用 WCF 服务

c# - 我想添加一个字符串扩展方法。但是我应该在我的 Xamarin Forms 应用程序中的什么地方添加它以便它随处可用?

c# - 适用于 .Net 和 Windows 的 StatsD 和类似 Graphite 的工具

c# - 使用 "foreach"语句将字符串数组的索引值设置为 Enumerable 数组中的项目的索引值。

c# - 判断集合是否相等(集合由集合组成)

c# - 使用 ROW_NUMBER() 和 PARTITION BY 的复杂 LINQ 查询的解决方案

c# - "Cannot perform runtime binding on a null reference"读取/显示Excel

c# - .net StopWatch 的计时不一致

c# - ASP.Net MVC3/4 多模板