Windows Service - разрешить не более одного вызова
От: Аноним  
Дата: 10.01.14 04:33
Оценка:
У нас есть некий 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);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.