У меня есть служба Windows, которая должна работать одновременно. Я просмотрел threading и нашел класс ThreadPool. Я в настоящее время застрял, это, кажется, не имеет никакого эффекта, это похоже на то, что я в очереди, никогда не запускается или не звонит. В OnStart() событии сервиса создать нить вроде этого:C# - ThreadPool.QueueUserWorkItem() Требования
Thread mainThread = new Thread(ReceiveMessages);
mainThread.Start();
Внутри методы ReceiveMessages() У меня есть процедура, которая проверяет очередь сообщений, а затем итерацию через сообщения. Для каждой итерации я вызываю следующий код, чтобы сделать некоторую работу с каждым сообщением:
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state)
{
Interpreter.InsertMessage(encoding.GetBytes(MessageBody));
}), null);
Я думаю, что синтаксис является правильным, он компилирует без проблем, но я не могу помочь, но чувствую, что я что-то отсутствует. Когда я запускаю службу, ничего не происходит. Однако, если я заменил приведенный выше фрагмент кода следующим образом:
insertThread = new Thread(delegate() { Interpreter.InsertMessage(encoding.GetBytes(MessageBody)); });
insertThread .Start();
Он работает на 100%. Это не очень эффективно, хотя может привести к сбою службы (что иногда случается, почему я пытаюсь использовать TheadPool вместо этого). Может ли кто-нибудь пролить свет на эту тему?
Это прекрасно! Работает как шарм! –