繁体   English   中英

在exe中使用多线程面临问题

[英]facing issue using Multithreading in exe

我在多线程中面临问题。 案例:我正在创建exe来从其他网站下载照片,因为有1000幅来自其他服务器的照片,我已经实现了多线程,但是无法正常工作
在Main()中,我调用了一个名为ThreadMain(); 和在ThreadMain(); 功能,我们将任务分为十个线程,例如

 ThreadStart jobOne = new ThreadStart(ThreadOne);
            Thread threadOne = new Thread(jobOne);
            // Start the thread
            threadOne.Start();
ThreadStart jobTwo = new ThreadStart(ThreadTwo);
            Thread threadTwo = new Thread(jobTwo);
            threadTwo.Start();
 ThreadStart jobThree = new ThreadStart(ThreadThree);
            Thread threadThree = new Thread(jobThree);
            threadThree.Start();

等多达10个线程
然后我们进一步定义了静态方法,例如

静态无效ThreadOne(){数据库任务}

静态void ThreadTwo(){数据库任务}

静态无效ThreadThree(){数据库任务}

最多10个作业,但是在完成线程之后,控制台窗口不会自行关闭,或者我不知道线程是否已完成? 请指教

使用后台工作者。

它们是在程序中运行的一种特殊线程。 您可以使用后台工作程序的“ Progress”属性将进度报告给另一个方法,并在该方法中计算必要的条件并检查线程是否关闭并最终关闭程序。

如果您不想更改程序的结构,则另一种方法是使用另一个名为“ watcherThread”的线程(将其称为wat),并根据您的一般执行情况使此线程以三到五秒的间隔连续运行时间并检查所有其他线程的isRunning属性或所有其他线程的threadState属性,一旦知道所有线程都已完全运行,就可以使用“ environment.exit(0);”安全地关闭窗口。

一些参考

http://msdn.microsoft.com/zh-cn/library/cc221403(v=vs.95).aspx http://www.dotnetperls.com/backgroundworker

http://midnightprogrammer.net/post/Using-Background-Worker-in-C.aspx http://csharptuning.blogspot.com/2007/05/background-worker.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM