我有一个控制台应用程序,它与另一个用户界面进行交互。接口发送命令,我的应用程序应该处理它们。在处理和执行命令时,一直听我的控制台应用程序很重要。所以我在主线程上监听接口并在另一个线程中执行命令。已排序执行线程
下面的例子是我正在尝试和问题是执行线程没有排序。
第二件事是我在ProcessCommand方法中使用锁,但我不确定它是否安全。例如,一个线程可以在ProcessCommand方法内,因此一个线程处于锁定状态,因此其他线程可以更改传入输入值。我对吗 ?我做了一些测试,但从未发生过,但仍然怀疑它。
什么是最佳解决方案?解决方案可以是线程化或不线程化。
class Program
{
static object locker = new object();
static void Main(string[] args)
{
while (true)
{
var input = Console.ReadLine();
(new Thread(new ParameterizedThreadStart(ProcessCommand))).Start(input);
}
Console.ReadKey();
}
static void ProcessCommand(dynamic input)
{
lock (locker)
{
Console.WriteLine(input);
//process incoming command
}
}
}
我的锁实现呢?当另一个线程输入方法时,传入的命令可以在锁中更改 – Freshblood 2010-08-12 18:46:06
@Freshblood:不,它不会改变每个线程正在处理的内容......它只是强制你的线程被序列化 - 每次只有一个线程被激活,使得它首先有多个线程毫无意义。 – 2010-08-12 18:59:06
我喜欢那个网站。多年来我一直在使用它作为参考。 – 2010-08-12 23:02:30