【问题标题】:Call Function Cross Thread in C# [duplicate]在C#中调用函数跨线程[重复]
【发布时间】:2016-08-11 07:40:53
【问题描述】:

我在 WindowsForms 中有一个名为 grid1 的网格。

我知道想从另一个线程调用grid1.Series.Clear()

现在我得到了通常的跨线程异常,一个线程正在接触 grid1,但另一个线程创建了它。

我找到了很多如何调用 grid1 的直接函数的例子。

但是如何从 grid1 中的 SeriesCollection "Series" 调用 Clear() 函数呢?

【问题讨论】:

    标签: c# .net multithreading winforms


    【解决方案1】:

    也许这会有所帮助。

    如果您想为此创建一个函数,这是一个示例。

    delegate void FunctionNameCallBack(InputParams);
    private void FunctionName(InputParams)
    {
        if (this.InvokeRequired)
        {
            var d = new FunctionNameCallBack(FunctionName);
            this.Invoke(d, InputParams);
        }
        else
        {
            // Your Code here.
        }
    }
    

    【讨论】:

      【解决方案2】:

      类似于以下内容:

      grid1.BeginInvoke(new MethodInvoker(() => grid1.Series.Clear()));
      

      【讨论】:

        【解决方案3】:

        此代码在创建 grid1 控件的线程以外的线程上运行

        grid1.Invoke((MethodInvoker)(() => grid1.Series.Clear()));
        

        【讨论】:

        • 这个答案有什么问题?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        相关资源
        最近更新 更多