这是我的问题:我正在用C#制作产品上传模块(主窗体)。我从excell文件中读取数据,然后上传到数据库,然后我调整图像大小并通过FTP上传。一切正常。现在我想添加一个进度条。我已经创建了一个新表单,我添加了两个进度条,并为进度条提供了新值的公共方法,以及第三种方法,在完成时输出文本。如果我将它的实例放入主窗体中,它可以工作,但我正在进行硬操作(调整图像大小,上传到ftp),并且CPU无法跟踪进度条的变化速度。所以解决方案是在新线程中启动进度表单。我尝试了许多不同的方法,但没有成功。主要问题是我应该从主窗体中触发进度表的公共方法。
我以前从未在c#中创建过进度表,你能告诉我哪种方法最简单,最简单吗?
答案 0 :(得分: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();
}