【问题标题】:Thread to giu delegates with variable number of parameters具有可变参数数量的 giu 委托的线程
【发布时间】:2014-07-29 05:30:44
【问题描述】:

我发现了几篇关于参数数量可变的代表的帖子,但我太厚了,无法理解它们的含义以及它们如何应用于我的情况。

这是我在主窗体中的内容:

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"
        } );

编译器运行它,但应用程序崩溃。

任何人都可以对我说真的,真的很慢,或者只是修复上面的代码,我会研究它?

谢谢大家,好心人。

【问题讨论】:

    标签: c# multithreading parameters delegates


    【解决方案1】:

    你必须写:

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

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

    【讨论】:

    • 不讨厌你,我的朋友。你是我今天最喜欢的人。
    • 谢谢!顺便说一句,大多数时候您应该使用 BeginInvoke 而不是 Invoke。例如。 stackoverflow.com/questions/229554/…
    • 太棒了。这真是太棒了。
    猜你喜欢
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多