gpt4 book ai didi

c# - 调用 EventHandler 泛型,TargetParameterCountException

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:21 24 4
gpt4 key购买 nike

我有一个在另一个线程上工作的 DirectoryMonitor 类。它声明了以下事件:

public class DirectoryMonitor
{
public event EventHandler<MonitorEventArgs> CreatedNewBook;
public event EventHandler ScanStarted;
....
}

public class MonitorEventArgs : EventArgs
{
public Book Book { get; set; }
}

有一个使用该监视器的表单,在收到事件后,它应该更新显示。

现在,这有效:

    void DirectoryMonitor_ScanStarted(object sender, EventArgs e)
{
if (InvokeRequired)
{
Invoke(new EventHandler(this.DirectoryMonitor_ScanStarted));
}
else {...}
}

但这会抛出 TargetParameterCountException:

    void DirectoryMonitor_CreatedNewBook(object sender, MonitorEventArgs e)
{
if (InvokeRequired)
{
Invoke(new EventHandler<MonitorEventArgs>(this.DirectoryMonitor_CreatedNewBook));
}
else {...}
}

我错过了什么?

最佳答案

Invoke 方法除了接收 System.Delegate 实异常(exception),无需传递任何其他参数即可调用该实例。使用 DirectoryMonitor_ScanStarted 创建的委托(delegate)需要 2 个参数,因此在使用时会出现异常。

您需要创建一个新委托(delegate),将调用和参数包装在一起。

MethodInvoker del = () => this.DirectoryMonitor_ScanStarted(sender,e);
Invoke(del);

关于c# - 调用 EventHandler 泛型,TargetParameterCountException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com