2010-08-20 31 views
1

这是我的问题:我正在C#中制作产品上传模块(主窗体)。我从excell文件读取数据,然后上传到数据库,然后我调整图像大小并通过FTP上传。一切正常。现在我想添加一个进度条。我创建了一个新表单,添加了两个进度条,并为进度条提供了新的值,并提供了公共方法,第三种方法是在完成时输出文本。如果我将它的一个实例放置到主窗体中,它可以工作,但是我正在进行艰难的操作(调整图像大小,将其上传到ftp),并且CPU无法像更改一样快地跟踪进度条。所以解决方法是在新线程中启动进度表单。我尝试了许多不同的方式来做到这一点,但没有成功。主要问题是我应该从主要形式触发进度表的公共方法。C#如何在另一个线程中运行和处理表单?

我从来没有在C#中的进度条,你能告诉我哪个是最简单和最简单的方法吗?

回答

1

我想也许你会最好的在单独的线程中执行密集的动作,然后将事件编组回到你的进度形式,以便向用户显示进度。

当你有单独的线程时,你不能从这些线程更新GUI。你应该看看使用Invoke MSDN

本示例还显示了一个简单示例,说明如何使用工作线程执行更加密集的任务。

private void Button_Click(object sender, EventArgs e) 
    { 
    myThread = new Thread(new ThreadStart(ThreadFunction)); 
    myThread.Start(); 
    } 
    private void ThreadFunction() 
    { 
    MyThreadClass myThreadClassObject = new MyThreadClass(this); 
    myThreadClassObject.Run(); 
    } 
+0

谢谢。我已将密集行动置于新线程中。进度条从主开始,所以它的工作完美。 – Ervin 2010-08-20 10:27:11

相关问题