我正在编写一个应用程序来扫描图像板上的图像,然后下载它们。当然,这必须是线程化的,因为可以同时刮掉多个板。我已经完成了基本的功能,但现在我已经碰壁了。
目前我通过提供网址启动线程,然后按一个按钮,此按钮启动一个指向类的线程。
我的问题在于这个类,因为我在那里使用了一个计时器。
目前,数据一次性被推送到日志,但应该按照设置推送数据。
目前这是我的函数,它绑定到我的计时器的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);
}
}
我做错了什么? (如果需要,可以提供更多代码)
答案 0 :(得分:0)
你没有提供.updatelog代码,所以我们可以正确回答 所以... 要么必须刷新该函数内的文件,要么必须启动调度程序
Dispatcher.Invoke(DispatcherPriority.Normal,
new Action<string>(main.updateLog),
th.Name + ": Blaat\n");