У меня есть API-интерфейс, называемый Application Library. Внутри у меня есть метод SynchronizeMe.Проблема при синхронизации метода при вызове из другого приложения
public class APIClass
{
object baton = new object();
static int count = 0;
public void SynchronizeMe()
{
while(true)
{
lock (baton)
{
int temp = count;
Thread.Sleep(5000);
count = temp + 1;
Console.WriteLine("Thread Id " + Thread.CurrentThread.ManagedThreadId + " Name:" + Thread.CurrentThread.Name + " incremented count to " + count);
}
Thread.Sleep(1000);
}
}
}
У меня есть две консоли Application Thread1 и Thread2. Оба они вызывают метод SynchronizeMe. Как
API.APIClass apicall = new API.APIClass();
apicall.SynchronizeMe();
Когда я запускаю это я вижу, оба печать счета начинаются с 1. Это означает, что она не синхронизирована. Я понимаю концепцию многопоточности над чем-то неправильно? Или у кода есть проблема? Или Thread в том же приложении можно синхронизировать. Если я хочу синхронизировать этот путь, каков путь?
Я думаю, что и Thread1, и Thread2 имеют разный экземпляр APIClass, поэтому синхронизация невозможна. Есть ли выход?
Чтобы уточнить, есть ли у вас два отдельно работающих консольных приложения, которые вызывают библиотеку, или два потока в одном консольном приложении? – user783836
@ user783836 Два отдельно работающих консольных приложения. – TBAG
@TBAG см. Мой ответ – user783836