我有一个异步方法,我在其中调用事件,它引发了两次。我不知道我在做什么错。这是我从中调用的方法:
public async Task SyncData(GAT t)
{
try
{
GetInventoryDataResponse response = await GetInventoryData(t);
List<InventoryData> inventoryData = response.InventoryDataColl;
//Some logic
NotifyDataEvent?.Invoke(this, new NotifyEventArgs(Result.Success));
}
catch (Exception ex)
{
Log.WarnWithException("Unable to sync", ex);
throw;
}
}
这是我注册和取消注册活动的班级。在构造函数中,我正在注册它:
_stationAgent.NotifyDataEvent += NotifyData;
在dispose方法中,我取消注册此事件
_stationAgent.NotifyDataEvent -= NotifyData;
但是notifydata多次提出。有什么问题吗?
答案 0 :(得分:1)
检查事件的调用列表:
EventHandler e = NotifyDataEvent;
var count = e.GetInvocationList().Length;
如果count = 2
,则您呼叫NotifyDataEvent +=...
两次。如果是count = 1
,那么您将两次致电NotifyDataEvent.Invoke...
。