C#多线程咨询ConcurrentQueue
C#可以杀掉ConcurrentQueue中的某个进程吗 面向chartGPT编程不好意思,我的前一篇回答可能有些误导。ConcurrentQueue只是一个线程安全的队列,并不能直接对进程进行操作,但是可以将需要杀死的进程的进程ID添加到队列中,再在另一个线程中使用Process类对该进程进行操作,如杀死进程。
以下是一个简单的示例:
```
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Threading;
class Program
{
static ConcurrentQueue<int> processQueue = new ConcurrentQueue<int>();
static void Main()
{
// 添加进程ID到队列中
processQueue.Enqueue(1234);
// 启动后台线程
Thread thread = new Thread(ProcessQueue);
thread.IsBackground = true;
thread.Start();
// 程序继续执行
Console.WriteLine("Do something else here...");
}
static void ProcessQueue()
{
// 不断循环处理队列,直到队列为空
while (processQueue.TryDequeue(out int processId))
{
try
{
Process.GetProcessById(processId).Kill();
Console.WriteLine("Process with ID {0} has been killed.", processId);
}
catch (ArgumentException)
{
Console.WriteLine("Process with ID {0} does not exist.", processId);
}
catch (Exception ex)
{
Console.WriteLine("Failed to kill process with ID {0}. Error message: {1}.", processId, ex.Message);
}
}
}
}
```
上述代码创建了一个`ConcurrentQueue`,将需要杀死的进程ID添加到队列中,再通过启动一个后台线程来处理队列。后台线程不断循环处理队列,直到队列为空,每次取出队列的第一个进程ID,使用`Process.GetProcessById()`方法获取该进程的`Process`实例并杀死进程。如果进程不存在,则输出相应的提示信息。 13570648032 发表于 2023-5-10 16:50
面向chartGPT编程
不好意思,我的前一篇回答可能有些误导。ConcurrentQueue只是一个线程安全的队列,并 ...
谢谢,就是不想加锁,想看看有没有简单的方法 不加锁? ConcurrentQueue 本身就带锁。
页:
[1]