码迷,mamicode.com
首页 > 编程语言 > 详细

.NET中多线程处理

时间:2014-06-19 10:20:03      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:多线程   thread.suspend   

相信大家在.NET中处理大量数据的时候,不可避免的会用到线程。

那么线程的几个方法,大家应该都知道:

定义四个线程

            ReceiveThread = new Thread(new ThreadStart(ReceiveFunc));
            SaveThread = new Thread(new ThreadStart(SaveFunc));
            SendThread = new Thread(new ThreadStart(SendFunc));
            DataThread = new Thread(new ThreadStart(showDataToList));
实例化线程:

        public Thread ReceiveThread { get; set; }
        public Thread SaveThread { get; set; }
        public Thread SendThread { get; set; }
        public Thread DataThread { get; set; }

开启线程:

        ReceiveThread.Start(); // 启动线程
        DataThread.Start();
        SendThread.Start();
        DataThread.Start();
挂起线程:

        ReceiveThread.Suspend(); // 挂起线程
        DataThread.Suspend();
        SendThread.Suspend();
        DataThread.Suspend();
恢复线程:

        ReceiveThread.Resume(); // 恢复线程
        DataThread.Resume();
        SendThread.Resume();
        DataThread.Resume();
终止线程:

        ReceiveThread.Abort(); // 终止线程
        DataThread.Abort();
        SendThread.Abort();
        DataThread.Abort();

你多试几次,挂起和恢复,你会发现线程死掉了;

那么出现这个问题,怎么解决呢?

我想了一个比较笨的方法,在线程的主循环中,添加一个while循环,通过一个flag控制线程sleep,当需要线程暂停的时候,flag置ON,那么线程就会进入while循环,不停的sleep,当需要恢复线程的时候,将flag直接off掉,线程就恢复,而且,反复多次,线程运行正常;

实例代码:

while (Flag_Receive || ReceiveThreadSleepFlag)
            {
                while (ReceiveThreadSleepFlag)
                {
                    Thread.Sleep(1); // 线程sleep等待
                    continue;
                }
// 主线程事情
}

上面的Flag_Receive是主线程运行flag,ReceiveThreadSleepFlag是线程sleep的flag。


提供一种思路,希望对阅读这篇文章的读者,能够起到抛砖引玉的效果。



.NET中多线程处理,布布扣,bubuko.com

.NET中多线程处理

标签:多线程   thread.suspend   

原文地址:http://blog.csdn.net/qincode/article/details/30102251

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!