.NET 终止或结束进程
如何使用 C# 终止进程。
使用简单的方法终止.NET中的现有进程Process.Kill()。有一个可选参数 true 或 false,用于结束与要结束的进程相关的所有子进程。
了解如何创建流程。
结束当前进程:
System.Diagnostics.Process.GetCurrentProcess().Kill(true);
结束当前计算机上所有名为“notepad”的进程:
static void KillAllNotepadProcesses()
{
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("notepad", "."); // use "." for this machine
foreach (var proc in procs)
proc.Kill(true);
}
要结束另一台计算机上名为“notepad”的所有进程:
static void KillAllNotepadProcesses()
{
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("notepad", "Machine-Name-or-IP-Address"); // enter the IP address or machine name
foreach (var proc in procs)
proc.Kill(true);
}
结束当前进程的所有其他实例:
static void KillAllOtherInstances()
{
System.Diagnostics.Process thisProc = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName(thisProc.ProcessName, "."); // use "." for this machine
foreach (var proc in procs)
if (proc.Id != thisProc.Id) // the process Id is unique across all processes while the process name can be common
proc.Kill(true);
}
完整的现实示例:
为了扩展上述代码片段,我们准备了以下代码。它使用强力算法来解决π,这对 CPU 来说非常耗电。因此,它会终止(杀死)自身的所有其他实例,以防止机器负担过重。编译此代码并尝试运行多个实例!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace KillOtherInstancesAndSolvePI
{
class JobTask
{
public Task task { get; }
public int id { get; }
public double pi { get; set; }
public ulong iterations { get; set; }
public CancellationTokenSource CancelToken { get; }
public JobTask(int id)
{
this.id = id;
CancelToken = new CancellationTokenSource();
task = Task.Run(async () => // async not necessary in this example
{
var spaces = Environment.ProcessorCount.ToString().Length;
iterations = (ulong)new Random().Next() * 10;
Console.WriteLine("Started Job: {0, -" + spaces + "} Iterations: {1}", id, iterations);
pi = SolvePi(iterations, CancelToken);
Console.WriteLine("Job: {0, -" + spaces + "} ended with pi={1}", id, pi.ToString("0.00000000000000"));
}, CancelToken.Token);
}
static double SolvePi(ulong count, CancellationTokenSource cancel)
{
//π = 3.14159265358979323846264338327950288419...
//π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) + ...
//π = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 + ...)
double x = 1.0;
for (ulong i = 2; !cancel.IsCancellationRequested & (i < count); i++)
{
if ((i & 1) == 0)
x -= 1.0 / ((i << 1) - 1);
else
x += 1.0 / ((i << 1) - 1);
}
return 4.0 * x;
}
}
class Program
{
static void KillAllOtherInstances()
{
System.Diagnostics.Process thisProc = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName(thisProc.ProcessName, ".");
foreach (var proc in procs)
if (proc.Id != thisProc.Id)
proc.Kill(true);
}
static void Main(string[] args)
{
KillAllOtherInstances(); // end the other process before trying to solve PI
var jobTasks = new List<JobTask>();
Console.WriteLine("pi={0}", 3.1415926535897932384626433833.ToString("0.00000000000000"));
Console.WriteLine("Logical Processors: {0}", Environment.ProcessorCount);
Console.WriteLine("ENTER JOB NUMBER TO TERMINATE AT ANYTIME");
var spaces = Environment.ProcessorCount.ToString().Length;
int[] jobsIds = new int[Environment.ProcessorCount];
for (int i = 0; i < Environment.ProcessorCount; i++)
jobsIds[i] = i;
foreach(var jobId in jobsIds)
jobTasks.Add(new JobTask(jobId));
Thread.Sleep(250);
foreach (var j in jobTasks.OrderBy(j => j.iterations))
Console.WriteLine("Job: {0, -" + spaces + "} Iterations: {1}", j.id, j.iterations);
Task.Run(() => // create a task to terminate the app when all pi tasks are done
{
while (jobTasks.Where(j => j.task.IsCompleted == false).Count() > 0)
Thread.Sleep(250);
Environment.Exit(0);
});
while (jobTasks.Where(j => j.task.IsCompleted == false).Count() > 0) // look for a request to cancel a job from the user
{
var id = Console.ReadLine();
JobTask jt = jobTasks.Where(j => j.id.ToString() == id).FirstOrDefault();
if(jt != null)
jt.CancelToken.Cancel();
}
}
}
}
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
相关文章:
![](https://i-blog.csdnimg.cn/direct/25a8e8e10ae04d779bb5b273d1c2d19b.png)
.NET 终止或结束进程
如何使用 C# 终止进程。 使用简单的方法终止.NET中的现有进程Process.Kill()。有一个可选参数 true 或 false,用于结束与要结束的进程相关的所有子进程。 了解如何创建流程。 结束当前进程: System.Diagnostics.Process.GetCurrentProcess().Kill(tru…...
![](https://www.ngui.cc/images/no-images.jpg)
R.swift库的详细用法
R.swift 是一个 Swift 工具库,它提供了一个自动生成的类 R,使得你可以通过类型安全的方式访问项目中的资源,例如图片、字体、颜色、XIB 文件等。通过 R.swift,你可以避免字符串类型的错误,提升代码的可维护性。 以下是 R.swift 库的详细用法: 1. 安装 R.swift 使用 Sw…...
![](https://i-blog.csdnimg.cn/img_convert/9abeba1b8fdcd729ed107dde0eec2e8b.png)
Js的回调函数
一、什么是回调函数(Callback)? 回调函数(Callback Function)是指一个函数被作为参数传递给另一个函数,并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
flutter 独立开发之笔记
1、# use: - [flutter_launcher_icons:] 每次修改完icon后,都需要执行一遍 dart run flutter_launcher_icons 2、开启混淆并打包apk flutter build apk --obfuscate --split-debug-info./out/android/app.android-arm64.symbols 3、开启windows支持 flutter con…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP的扩展Imagick的安装
windows下的安装 下载:Imagick扩展 PECL :: Package :: imagick 3.7.0 for Windows 下载:ghostscript(PDF提取图片时用到,不处理PDF可以不安装) Ghostscript : Downloads 安装扩展 Imagick解压后&…...
![](https://www.ngui.cc/images/no-images.jpg)
【git】在服务器使用docker设置了一个gogs服务器,访问和现实都不理想
以下问题应该都可以通过设置custom/conf/app.ini来解决 配置文档参考地址:https://www.bookstack.cn/read/gogs_zh/advanced-configuration_cheat_sheet.md domain显示的事localhost,实际上应该是一个IP地址。 关键字: DOMAIN ROOT_URL 因为是docker…...
![](https://i-blog.csdnimg.cn/img_convert/07bb08476fe3df7c8724d562fd82e4ee.png)
多台PC共用同一套鼠标键盘
当环境中有多个桌面 pc 需要操作的时候,在 多台 pc 之间切换会造成很多的不方便 可以通过远程进行连接,但是有一个更好的方案是让多台机器之间共用同一套键盘鼠标 常用的解决方案 synergy 和 sharemouse,通过移动光标在不同的 pc 间切换 s…...
![](https://www.ngui.cc/images/no-images.jpg)
大语言模型是如何训练出来的?
近期听了不少与AI相关的播客,有理想转型AI的分享,有Character.ai出来同事的分享等,结合对Transformer架构的理解尝试大致还原大语言模型的训练过程。不过,当我这样的“中国大妈”也能够大致琢磨明白大语言模型是如何训练出来的时候…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue2与Vue3在项目开发中的选择:深入探讨
文章目录 前言一、Vue2的优势与挑战二、Vue3的进步与特性三、如何做出选择?结语 前言 Vue.js 是一个用于构建用户界面的渐进式JavaScript框架。Vue2和Vue3是其两个主要版本,它们各自拥有一系列特点和优势。随着Vue3的发布,开发者们面临着在新…...
![](https://www.ngui.cc/images/no-images.jpg)
Web枚举:深入了解目标应用系统
Web枚举是渗透测试中重要的第一步,旨在全面收集目标系统的信息,以便后续攻击载荷的构建更具针对性和效率。本文将详细讨论如何通过各种方法识别目标Web应用的技术栈,并提取关键信息。 1. 识别目标系统的技术栈 技术栈指Web应用所依赖的技术组…...
![](https://i-blog.csdnimg.cn/direct/9bf4bdfdc1484703b96784aa15ccb84d.png)
RabbitMQ介绍与使用
RabbitMQ官网 RabbitMQ 介绍 RabbitMQ 是一个开源的消息代理和队列服务器,基于 AMQP(高级消息队列协议)标准,使用 Erlang 编程语言构建。它是消息队列(MQ)的一种,广泛应用于分布式系统中&#x…...
![](https://i-blog.csdnimg.cn/direct/2f5479000c5f4db9a5ba3ce34937b52d.png)
从0到机器视觉工程师(六):配置OpenCV和Qt环境
CMake配置OpenCV CMakeLists.txt文件的编写 cmake_minimum_required(VERSION 3.20) project(test_opencv LANGUAGES CXX) #寻找Opencv库 FIND_PACKAGE(OpenCV REQUIRED) include_directories(test_opencv ${OpenCV_INCLUDE_DIRS}) add_executable(test_opencv main.cpp) TARGE…...
![](https://i-blog.csdnimg.cn/direct/4f62f844bdc5415db07ef06ceacb8773.png)
计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
![](https://i-blog.csdnimg.cn/img_convert/01648d0248609f2d37be356a8c79cfd2.png)
(Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
LORA-FA:针对大型语言模型微调的内存高效低秩自适应 paper是香港浸会大学发表在Arxiv 2023的工作 paper title:LORA-FA: MEMORY-EFFICIENT LOW-RANK ADAPTATION FOR LARGE LANGUAGE MODELS FINE-TUNING ABSTRACT 低秩自适应 (LoRA) 方法可以大大减少微调…...
![](https://www.ngui.cc/images/no-images.jpg)
huggingface/bert/transformer的模型默认下载路径以及自定义路径
当使用 BertTokenizer.from_pretrained(bert-base-uncased) 加载预训练的 BERT 模型时,Hugging Face 的 transformers 库会从 Hugging Face Model Hub 下载所需的模型文件和分词器文件(如果它们不在本地缓存中)。 默认情况下,这些…...
![](https://www.ngui.cc/images/no-images.jpg)
从 0 开始上手 Solana 智能合约
Solana CLI 基础知识 Solana CLI 是一个命令行界面工具,提供了一系列用于与 Solana Cluster 交互的命令。 我们将介绍一些最常见的命令,但你始终可以通过运行 solana --help 查看所有可能的 Solana CLI 命令列表。 Solana CLI 配置 Solana CLI 存储了…...
![](https://i-blog.csdnimg.cn/direct/ff60ece241ca43de86c102e414e62121.png)
(六)CAN总线通讯
文章目录 CAN总线回环测试第一种基于板载CAN测试第一步确认板载是否支持第二步关闭 CAN 接口将 CAN 接口置于非活动状态第三步 配置 CAN 接口第一步 设置 CAN 接口比特率第二步 设置 CAN 启用回环模式第三步 启用 CAN 接口 第四步 测试CAN总线回环捕获 CAN 消息发送 CAN 消息 第…...
![](https://i-blog.csdnimg.cn/img_convert/090ddef66350395f68bf5d2240e57803.jpeg)
新一代智能工控系统网络安全合规解决方案
01.新一代智能工控系统概述 新一代智能工控系统是工业自动化的核心,它通过集成人工智能、工业大模型、物联网、5G等技术,实现生产过程的智能化管理和控制。这些系统具备实时监控、自动化优化、灵活调整等特点,能够提升生产效率、保证产品质量…...
![](https://i-blog.csdnimg.cn/direct/488fe627b0204475995ab0f89d9950bc.png)
Vivado中Tri_mode_ethernet_mac的时序约束、分析、调整——(一)时序约束的基本概念
1、基本概念 推荐阅读,Ally Zhou编写的《Vivado使用误区与进阶》系列文章,熟悉基本概念、tcl语句的使用。 《Vivado使用误区与进阶》电子书开放下载!! 2、Vivado中的语法例程 1)语法例程 约束的语句可以参考vivado…...
![](https://i-blog.csdnimg.cn/img_convert/5be6efba75d988ccd39dd8680841e3d9.png)
车载网络:现代汽车的数字心跳
在汽车领域,“智能汽车”一词毫不夸张。如今的汽车已不再是原始的机械工程,而是通过先进的车载网络无缝连接的精密数字生态系统。这些滚动计算机由复杂的电子控制单元(ECU)网络提供动力,ECU是负责管理从发动机性能到信息娱乐系统等一切事务的…...
![](https://i-blog.csdnimg.cn/direct/8a1f427f2c624567805645ed8a31ebfb.png)
python基础和redis
1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载࿰…...
![](https://i-blog.csdnimg.cn/img_convert/49150784165ba9ef502963dcb282256c.png)
w~自动驾驶~合集16
我自己的原文哦~ https://blog.51cto.com/whaosoft/12765612 #SIMPL 用于自动驾驶的简单高效的多智能体运动预测基准 原标题:SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 论文链接:https://ar…...
![](https://www.ngui.cc/images/no-images.jpg)
最长的指定瑕疵度的元音子串
一、题目 最长的指定瑕疵度的元音子串 定义:开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如: “a” 、 "aa"是元音字符串,其瑕疵度都为0 "aiu…...
![](https://i-blog.csdnimg.cn/direct/d6f50f44528a4805a79e4a4ee80b2403.png)
每日算法Day15【组合、组合总和III、电话号码的字母组合】
77. 组合 算法链接: 77. 组合 - 力扣(LeetCode) 类型: 回溯 难度: 中等 回溯三步法: 1、确定参数返回值 2、确定终止条件 3、单层搜索逻辑 剪枝操作: 当path容量超过k时的数据可以不用遍历,故遍历边界条件判断: …...
![](https://i-blog.csdnimg.cn/direct/c30eb28c00ac4cfabdad12a5399c34e7.png)
C语言教程——指针进阶(2)
目录 一、函数指针数组 1.1函数指针数组写法 1.2函数指针用途 二、指向函数指针数组的指针 2.1概念 三、回调函数 3.1用法 3.2qsort排序 总结 前言 我们接着上一篇的函数指针往下学习。 一、函数指针数组 1.1函数指针数组写法 我们都知道指针数组,里面可以…...
![](https://www.ngui.cc/images/no-images.jpg)
调和级数不为整数的证明
文章目录 1. 问题引入2. 证明2.1 引理12.2 引理22.3 引理3:2.4 核心证明: 3. 参考 1. 问题引入 s ( n ) 1 1 2 1 3 ⋯ 1 n , n ∈ N ∗ , n ≥ 2 s(n) 1\frac{1}{2}\frac{1}{3}\cdots\frac{1}{n}, \quad \\n \in N^*, n \ge2 s(n)12131⋯n1,…...
![](https://i-blog.csdnimg.cn/img_convert/bb182e637f36dc6ffe146dac958727bd.png)
基于微信小程序的在线学习系统springboot+论文源码调试讲解
第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
基于 Boost.Asio 和 Boost.Beast 的异步 HTTP 服务器(学习记录)
已完成功能: 支持 GET 和 POST 请求的路由与回调处理。 解析URL请求。 单例模式 管理核心业务逻辑。 异步 I/O 技术和 定时器 控制超时。 通过回调函数注册机制,可以灵活地为不同的 URL 路由注册处理函数。 1. 项目背景 1.1 项目简介 本项目是一个基于…...
![](https://i-blog.csdnimg.cn/img_convert/ff95ee4eb6e4507b6389f70a5122935e.png)
有机物谱图信息的速查技巧有哪些?
谱图信息是化学家解读分子世界的“语言”,它们在化学研究的各个领域都发挥着不可或缺的作用。它们是理解和确定分子结构的关键,对化学家来说极为重要,每一种谱学技术都提供了不同的视角来观察分子,从而揭示其独特的化学和物理特性…...
![](https://www.ngui.cc/images/no-images.jpg)
Eureka缓存机制
一、Eureka的CAP特性 Eureka是一个AP系统,它优先保证可用性(A)和分区容错性(P),而不保证强一致性(C)。这种设计使得Eureka在分布式系统中能够应对各种故障和分区情况,保…...
![](/images/no-images.jpg)
怎么看一个网站是什么时候做的/西安seo站内优化
php有两套使用共享内存的函数,一套是System VIPC函数的封装,另一套是shmop。这两个都无需安装外部库文件。前者只能在linux下使用,而且要使用它的话,在安装php的时候要加上–enable-sysvshm选项;而后者在linux和window…...
![](/images/no-images.jpg)
本网站建设中/短视频培训要多少学费
0、 【创建更新查询,选择经费字段—更新到设置为: [经费]2000 】1、 070101:将学生"入校时间"字段的默认值设置为下一年度的一月一日(规定:本年度的年号必须用函数获取)。2、 【设计视图—入校时间—默认值属性设置为&…...
![](https://img-blog.csdnimg.cn/img_convert/a95b79e937b2c0ac73ac0c81b3e9136d.png)
做海报的网站有哪些内容/seo网络优化是做什么的
JDK下载安装及环境配置 一、文章导读 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 二、JDK版本描述 学习…...
![](http://b.hiphotos.baidu.com/exp/w=500/sign=23dd72ed26738bd4c421b231918b876c/b3fb43166d224f4ad9cd7e2301f790529822d1ae.jpg)
网站建设的论文参考文献/seo快速工具
本文介绍如何在Unity中使用HTC vive设备,当前VR作为市场比较火热的热点,HTC VIVE设备作为三大供应商之一,许多人购买了该设备,却不知道如何使用,本文通过图文并茂的形式,进行手把手的讲解HTC VIVE设备和Uni…...
房地产广告设计/免费seo营销优化软件下载
昨晚一直在弄Nginx安装Lua模块,一开始我是yum install nginx安装的Nginx,这样的话就不需要编译安装的那么麻烦,在安装Lua模块的过程中,我想更新下Pcre的版本,结果把系统搞炸了,删除了不该删的文件ÿ…...
![](/images/no-images.jpg)
wap新闻网站源码/优化落实疫情防控新十条
录音 在AVFoundation框架中有一个AVAudioRecorder类专门处理录音操作,它同样支持多种音频格式。与AVAudioPlayer类似,你完全可以将它看成是一个录音机控制类,下面是常用的属性和方法: 先来了解下AVAudioRecorder的常用属性: prope…...