我调用了一个事件,想要检查某个用户是否正在使用该组件。如果有人正在使用该组件,那么我将锁定该组件,以便其他人无法在编辑模式下打开它。 我的代码如下所示: -
public event EventHandler<LockingEvent> Locking; //Some Event
private async void _e41View_QueryLocking(object sender, E41LockingEventArgs e)
{
if ()
{
//await Something goes Here - Calling WCf service
}
else if ()
{
//await Something goes Here - Calling WCf service
}
else
{
e.Cancel = true;
}
}
现在在事件中我正在调用一些服务,所以我使用了await关键字。 现在,一旦编译器遇到await关键字,它就跳出该方法并开始执行其余的Calling方法。
//Calling Method
internal bool QueryEditing()
{
//Event args value assigned here - 1
Locking(this, args); //Invoked the Event - 2
var retval = !args.Cancel; //Should be returned by the event -3
return retval;
}
现在由于这个事件中使用了await关键字,我没有得到&#34; args.cancel&#34;的更新值。只有在整个事件被执行后才会出现,所以我们需要等待那个特定的时间段。
现在我知道我可以使用.Result而不是等待。 但我想知道我们可以做些什么来等待Invoked事件执行,然后执行其余的代码。
如果是,请提供一些解释。