在我的代码中,我订阅了以下事件: -
UploadFolderMessageQueue.ReceiveCompleted += UploadMSMQReceiveCompleted;
Run Code Online (Sandbox Code Playgroud)
工作得很好,当Message Queue的Recieved Completed事件触发时,我的代表处理它.
现在,我想在订阅之前检查事件是否已订阅.我这样做时出现编译时错误: -
// Compile Time Errors...
if (UploadFolderMessageQueue.ReceiveCompleted == null)
{
UploadFolderMessageQueue.ReceiveCompleted += UploadMSMQReceiveCompleted;
UploadFolderMessageQueue.Formatter =
new XmlMessageFormatter(new[] {typeof (string)});
}
Run Code Online (Sandbox Code Playgroud)
事件"System.Messaging.MessageQueue.ReceiveCompleted"只能出现在+ =或左手侧 - =
我知道这很简单......但我很难过:(有什么建议吗?
bni*_*dyc 18
如果您需要确保只有一个订户,您可以使用以下代码:
UploadFolderMessageQueue.ReceiveCompleted -= UploadMSMQReceiveCompleted;
UploadFolderMessageQueue.ReceiveCompleted += UploadMSMQReceiveCompleted;
Run Code Online (Sandbox Code Playgroud)
如果UploadFolderMessageQueue.ReceiveCompleted
是,null
则第一行将不执行任何操作,在其他情况下,将删除事件处理程序.这意味着UploadFolderMessageQueue.ReceiveCompleted
将始终只有一个订阅者(当然,如果该UploadMSMQReceiveCompleted
事件是该事件的唯一一个事件处理程序).
The*_*iot 14
你不能从订阅者到活动这样做.只有发布商才能检查是否有订阅者.您需要使用类中的其他机制跟踪订阅,例如:
UploadFolderMessageQueue.ReceiveCompleted += UploadMSMQReceiveCompleted;
bool handlerAttached=true;
Run Code Online (Sandbox Code Playgroud)
然后你可以用这个:
if(handlerAttached)
{
//DO YOUR STUFF
}
Run Code Online (Sandbox Code Playgroud)