C# 如何获取当前进程或线程的ID

目录
  • 获取当前进程或线程的ID
  • C# 进程读取方法

获取当前进程或线程的ID

如果获得当前进程的Id用:

Process[] processes = Process.GetProcesses(); 
foreach(Process process in processes) 
{ 
if(process.ProcessName == "进程名" 
{ 
MessageBox.Show(process.Id); 
} 
}
Process processes   =Process.GetCurrentProcess

processes.id获取当前进程的ID

如果获取当前线程的ID用:

Thread.CurrentThread.ManagedThreadId.ToString() (推荐)

AppDomain.GetCurrentThreadId().ToString()

C# 进程读取方法

首相要加入using System.Diagnostics;命名空间。

GetProcesses()、Modules属性。

一些进程的属性信息:

  • Id // 进程唯一标识符 (Id)
  • Handle //关联进程的本机句柄 (Handle)
  • HandleCount //打开句柄数 (HandleCount)
  • BasePriority //关联进程的基本优先级
  • StartTime //进程启动时间
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;//包含进程相关
namespace ProccessEx
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Process[] processes = null;
        private void btnGetProcessess_Click(object sender, EventArgs e)
        {
            processes = Process.GetProcesses();// 获取本地计算机上的进程
            this.lbProcess.Items.Clear();
            foreach (Process item in processes) {
                this.lbProcess.Items.Add(item.ProcessName);
            }
        }
        private void lbProcess_Click(object sender, EventArgs e)
        {
            if (lbProcess.Items.Count == 0) return;
            else {
                lbModels.Items.Clear();
            }
            Process currentProcess = processes[lbProcess.SelectedIndex]; // SelectedIndex 属性
            try {
                ProcessModuleCollection modules = currentProcess.Modules; // Mpdules 属性
                foreach (ProcessModule item in modules) {  // 注意是 ProcessModule 类型
                    lbModels.Items.Add(item.FileName);
                }
                // 显示当前进程的基本信息
                string info = "进程唯一标识符 (Id):" + currentProcess.Id + "\r\n\r\n";
                info += "关联进程的本机句柄 (Handle):" + currentProcess.Handle + "\r\n\r\n";
                info += "打开句柄数 (HandleCount):" + currentProcess.HandleCount + "\r\n\r\n";
                info += "关联进程的基本优先级:" + currentProcess.BasePriority + "\r\n\r\n";
                info += "进程启动时间:" + currentProcess.StartTime + "\r\n\r\n";
                txtProcessInfo.Text = info;
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }
        private void btnKill_Click(object sender, EventArgs e)
        {
            if (lbProcess.Items.Count == 0 || lbProcess.SelectedIndex == -1) return;
            Process currentProccess = processes[lbProcess.SelectedIndex];// 获取当前鼠标选择的进程
            currentProccess.Kill();// 杀掉进程
            currentProccess.Close();// 释放进程资源
            lbProcess.Items.RemoveAt(lbProcess.SelectedIndex);
            lbModels.Items.Clear();
            txtProcessInfo.Clear();
        }
        /// <summary>
        /// 用360浏览器打开我的博客
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenIE_Click(object sender, EventArgs e)
        {
            // 没注册就使用绝对路径
            // 打开我的博客
            Process.Start(@"C:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe", "blog.huvjie.com");
        }
        /// <summary>
        /// 打开新进程,如:notepad
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStartnew_Click(object sender, EventArgs e)
        {
            Process.Start(txtProcessFileName.Text.Trim());
        }
    }
}

输出效果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C#多线程的ResetAbort()方法

    一.简介 Abort方法可以通过跑出ThreadAbortException异常中止线程,而使用ResetAbort方法可以取消中止线程的操作,下面通过代码演示使用 ResetAbort方法. 二.代码 class Program { static void Main(string[] args) { Thread thread = new Thread(ThreadMethod); //执行的必须是无返回值的方法 thread.Name = "子線程A"; thread.Start(

  • C#使用ThreadPriority设置线程优先级

    一.简介 如果在应用程序中有多个线程在运行,但一些线程比另一些线程重要,这种情况下可以在一个进程中为不同的线程指定不同的优先级.线程的优先级可以通过Thread类Priority属性设置,Priority属性是一个ThreadPriority型枚举,列举了5个优先等级:AboveNormal.BelowNormal.Highest.Lowest.Normal.公共语言运行库默认是Normal类型的. 二.代码 class Program { static void Main(string[] a

  • C#多线程的Join()方法

    一.简介 Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止.官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这个方法,其它线程就会暂停执行,直到这个线程执行完为止才去执行(包括主线程). 二.代码 class Program { static void Main(string[] args) { Thread threadA = new Thread(ThreadMethod); threadA.Name = "線程A"; Thread threadB

  • 关于C#线程的全面解析

    目录 线程的作用和意义 线程生命周期 C#创建线程 C#让线程休眠一会 C#销毁线程 C#线程优先级 lock:给线程加锁,保证线程同步 Monitor:锁定资源 Mutex:互斥锁 线程的作用和意义 线程 被定义为程序的执行路径.每个线程都定义了一个独特的控制流.如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作. 线程是轻量级进程.一个使用线程的常见实例是现代操作系统中并行编程的实现.使用线程节省了 CPU 周期的浪费,同时提高了应用程序

  • C#使用Monitor类实现线程同步

    一.简介 Lock关键字是Monitor的一种替换用法,lock在IL代码中会被翻译成Monitor. lock (obj) { //代码段 } //就等同于 Monitor.Enter(obj); //代码段 Monitor.Exit(obj); Monitor的常用属性和方法: Enter(Object) 在指定对象上获取排他锁. Exit(Object) 释放指定对象上的排他锁. Pulse 通知等待队列中的线程锁定对象状态的更改. PulseAll 通知所有的等待线程对象状态的更改. T

  • C#使用LOCK实现线程同步

    一.简介 线程安全概念:线程安全是指在当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等.当多个线程同时读写同一份共享资源的时候,可能会引起冲突.这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团.线程同步的真实意思和字面意思恰好相反.线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操

  • C# 如何获取当前进程或线程的ID

    目录 获取当前进程或线程的ID C# 进程读取方法 获取当前进程或线程的ID 如果获得当前进程的Id用: Process[] processes = Process.GetProcesses();  foreach(Process process in processes)  {  if(process.ProcessName == "进程名"  {  MessageBox.Show(process.Id);  }  } Process processes   =Process.Get

  • C#获取进程或线程相关信息的方法

    本文实例讲述了C#获取进程或线程相关信息的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApp { class ProcessDo { /// <summary> /// 获取进程相关信息 /// </summary> pub

  • 深入浅析WinForm 进程、线程及区别介绍

    一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc"); //打开计算器 Process.Start("mspaint"); //打开画图 Process.Start("iexplore" , "http://www.

  • 简述Python中的进程、线程、协程

    进程.线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下. 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度. 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的). 协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度. 进程和其他两个的区别还是很明显的. 协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力. Pyt

  • WIN32程序获取父进程ID的方法

    学过windows程序设计的人都知道,windows中的进程是可以有父子关系的,拥有父子关系的进程,一旦父进程结束,子进程有会随之退出.但是如果进程之间没有父子关系,我们如何让子进程在父进程退出是也同时跟着退出呢?方法有很多,本文介绍其中的一种利用父进程ID的方案,实现的原理很简单:先获取父进程的ID,然后通过ID来获取父进程Handle,通过监视父进程的Handle来决定子进程是否退出.所以,这里的关键就是如何获取父进程的ID. 为了获取父进程ID,这里需要用到一个微软未公开的API: NTS

  • java中进程与线程_三种实现方式总结(必看篇)

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间. 2:

  • 简述Java中进程与线程的关系_动力节点Java学院整理

    概述 进程与线程,本质意义上说, 是操作系统的调度单位,可以看成是一种操作系统 "资源" .Java 作为与平台无关的编程语言,必然会对底层(操作系统)提供的功能进行进一步的封装,以平台无关的编程接口供程序员使用,进程与线程作为操作系统核心概念的一部分无疑亦是如此.在 Java 语言中,对进程和线程的封装,分别提供了 Process 和 Thread 相关的一些类.本文首先简单的介绍如何使用这些类来创建进程和线程,然后着重介绍这些类是如何和操作系统本地进程线程相对应的,给出了 Java

  • C#网络编程基础之进程和线程详解

    在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下baike. 进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动.它是操作系统动态执行的基本单元, 在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 线程:是"进程"中某个单一顺序的控制流. 关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到. 二:进程

  • python进程和线程用法知识点总结

    今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持"多任务"的操作系统,这使得我们可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而缩短程序的执行时间,同时也让用户获得更好的体验.因此在当下不管是用什么编程语言进行开发,实现让程序同时执行多个任务也就是常说的"并发编程",应该是程序员必备技能之一.为此,我们需要先讨论两个概念,一个叫进程,一个叫线程. 概念 进程就是操作系统中执行的一个程序,操作

  • Java线程操作的常见方法【线程名称获取、设置、线程启动判断等】

    本文实例讲述了Java线程操作的常见方法.分享给大家供大家参考,具体如下: 一 线程名称的操作 1 代码 public class GetNameThreadDemo extends Thread { public void run() { for( int i = 0; i < 5; ++i ) { printMsg(); try { Thread.sleep(1000); // 睡眠1秒 } catch( InterruptedException e ) { e.printStackTrac

随机推荐