У нас есть некий Windows Service (Service1)
Надо сделать так, чтобы пользователи или процессы не могли ОДНОВРЕМЕННО вызывать методы Service1.
Вызовы делаются через remoting
Т.е. если кто-то вызвал метод и он в процесе отработки, то след вызов возможен только тогда когда первый вызов прекратит работу
Вопрос: как это реалиховать, правильно ли это реализорвано ниже — в классе сервиса есть счетчик вызова или флаг
Спасибо
//Service
class MyService : MarshalByRefObject, IMyService
{
private bool bWorking = false;
public void MyMethod()
{
if(bWorking)
throw new Exception("Метод уже вызван. Подождите.");
bWorking = true;
DoMainWork();
bWorking = false;
}
}
//..............
//Client
TcpChannel channel = new TcpChannel();
ChannelService.RegisterChannel(channel, false);
IMyService srv = (IMyService)Activator.GetObject(typeof(IMyService), url);
srv.MyMethod();
ChannelService.UnRegisterChannel(channel);