线程指定具有可变数量参数的委托

本文关键字:参数 线程 | 更新日期: 2023-09-27 18:15:35

我发现了一些关于带有可变数量参数的委托的帖子,但我太笨了,无法理解它们的含义以及它们如何适用于我的情况。

这是我的主要形式:

public delegate void Report( params Object[] args );
...
public partial class Main : Form
{
    public ReportDelegate m_dlgtReport;
    ...
    public Main()
    {
        InitializeComponent();
        m_dlgtReport = new ReportDelegate( this.Report );
        ...
    }
    private void Report( params Object[] args )
    {
        if( args.Length > 0 )
        {
            string s1 = (string)args[ 0 ];
        }
        ...
    }

这是我在线程中调用它的方式:

m_Main.Invoke(
    m_Main.m_dlgtReport,
    new Object[] {
        "text",
        101,
        true
        } );
m_Main.Invoke(
    m_Main.m_dlgtReport,
    new Object[] {
        "text"
        } );

编译器选择了它,但是应用程序崩溃了。

有谁可以说得非常,非常慢,或者只是修复上面的代码,我将研究它?

谢谢大家,善良的人们。

线程指定具有可变数量参数的委托

你必须写:

this.Invoke(m_dlgtReport, (Object) new Object[] { "text", 101, true });

重要的部分是转换为(Object)。