从另一个线程写入线程内的计时器内的日志

时间:2013-03-31 04:35:56

标签: c#

我正在编写一个应用程序来扫描图像板上的图像,然后下载它们。当然,这必须是线程化的,因为可以同时刮掉多个板。我已经完成了基本的功能,但现在我已经碰壁了。

目前我通过提供网址启动线程,然后按一个按钮,此按钮启动一个指向类的线程。

我的问题在于这个类,因为我在那里使用了一个计时器。

目前,数据一次性被推送到日志,但应该按照设置推送数据。

目前这是我的函数,它绑定到我的计时器的tick事件:

    public void scanForImages(object s, ElapsedEventArgs e)
    {

        if (status != 1 && status != 4)
        {
            status = 1;
            int i = 0;
            while (status == 1)
            {
                main.updateLog(th.Name + ": Blaat\n");
                i++;
                if (i > 50)
                {
                    status = 4;
                    t.Stop();
                    main.updateThreads("Aborting: " + th.Name, th);

                    th.Abort();
                }
            }
        }
        else
        {
            t.Stop();
        }
    }

它会在我的文本框中返回输出,但它会立即推送所有内容(所有th.Name + ": Blaat\n"

updateLog: public void updateLog(string txt)         {

        if (InvokeRequired) 
        { 
            Action action = () => textBox2.AppendText(txt); 
            textBox2.Invoke(action); 
        } 
        else 
        { 
            textBox2.AppendText(txt); 
        } 

    }

我做错了什么? (如果需要,可以提供更多代码)

1 个答案:

答案 0 :(得分:0)

你没有提供.updatelog代码,所以我们可以正确回答 所以... 要么必须刷新该函数内的文件,要么必须启动调度程序

Dispatcher.Invoke(DispatcherPriority.Normal,
                      new Action<string>(main.updateLog),
                      th.Name + ": Blaat\n");