У меня есть служба WCF, подобная этой:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
public class MyWcfService
{
public void StartIt()
{
MyWorkManager mgr = new MyWorkManager(new MyWorker());
mgr.StartWorker();
}
}
Метод StartWorker MyWrokManger просто запускает новый поток с методом start, указанным для метода StartWork MyWorker's.Вот класс MyWorker:
public class MyWorker
{
public void StartWork()
{
Mylogger.Log("Starting work...");
// Call a long running method
LongRunningMethod();
Mylogger.Log("Completed work.");
}
private void WorkerMethod()
{
Mylogger.Log("Starting WorkerMethod()...");
// do something here
Mylogger.Log("Completed WorkerMethod().");
}
}
Затем я использую свой клиент для вызова службы дважды в цикле, и вот что я вижу в журнале (отсортировано по метке времени):
Invocation ThreadID Message
=================================================
1 5 Starting work...
2 7 Starting work...
2 7 Starting WorkerMethod()...
1 5 Starting WorkerMethod()...
2 7 Completed WorkerMethod().
1 5 Completed WorkerMethod().
2 7 Completed work.
1 5 Completed work.
Как может закончиться 2-й вызов до 1-го?Я думал, что каждый вызов метода должен быть последовательным.Чего мне не хватает?