0

在使用 AsyncOperation 将我的事件编组到 UI 上下文之后,我必须创建我的 OnEventName 方法到 OnEventNameAsync 版本的副本。我惊讶地发现我可以用以下两种方法替换我的所有 OnEventName 方法:

private void OnRaiseEvent<T>(EventHandler<T> instance, object sender, T e) where T : EventArgs
{
    if (this._calling_context != null)
    {
        this._calling_context.Post(this.OnRaiseEventAsync<T>, new object[] { instance, sender, e });
    }
}

private void OnRaiseEventAsync<T>(object state) where T : EventArgs
{
    object[] array = state as object[];

    if (array != null && array.Length == 3)
    {
        EventHandler<T> instance = array[0] as EventHandler<T>;
        object sender = array[1];
        T e = array[2] as T;

        if (instance != null && sender != null && e != null)
        {
            instance(sender, e);
        }
    }
}

通过调用引发事件:

this.OnRaiseEvent(this.EventName, this, EventArgs.Empty);

现在,每次我的应用程序引发事件时,我的应用程序都必须创建一个 SendOrPostCallback 委托的新实例,而且有很多。我的问题是,如果我保持这种设计模型,这是否会导致性能问题?在测试中,我没有注意到性能有任何下降,但想问问专家......

4

0 回答 0