相关疑难解决方法(0)

从后台线程更新UI,该线程在线程完成时在主UI中的循环中调用

我有一个WinForms应用程序,它调用一个业务类方法,执行一些重要操作,每次调用大约需要5秒.主窗体在循环中调用此方法.这个循环可以运行10次,也可以运行10万次.

WinForms应用程序向业务类发送一个参数,并有一个区域显示每个方法调用所花费的时间以及该方法返回的值.如何通知主窗口并使用每个调用返回的方法更新主winform中的文本区域?

目前,所有线程完成后,数据立即全部出现.有没有办法在每次调用完成后更新循环的所有迭代的UI?我不介意它是否顺序完成.

表格

    HeavyDutyClass hd;
    public Form1()
    {
        InitializeComponent();
        hd = new HeavyDutyClass();
    }


    //BUTTON CLICK
    private void Start_Click(object sender, EventArgs e)
    {

        int filecount = 5000;  //BAD - opening 5000 threads! Any other approach?
        hd.FileProcessed += new EventHandler(hd_FileProcessed);


        var threads = new Thread[filecount];

        for (int i = 0; i < filecount; i++)
        {
            threads[i] = new Thread(() => { hd.LongRunningMethod(); });
            threads[i].Start();   
        }

    }

    //BUSINESS CLASS EVENT THAT FIRES WHEN BUSINESS METHOD COMPELTES
    void hd_FileProcessed(object sender, EventArgs e) …
Run Code Online (Sandbox Code Playgroud)

multithreading winforms

4
推荐指数
1
解决办法
2258
查看次数

标签 统计

multithreading ×1

winforms ×1