c#中多进程可用多线程代替吗?
答案:2 悬赏:60 手机版
解决时间 2021-03-21 17:25
- 提问者网友:欲望失宠
- 2021-03-21 03:56
c#中多进程可用多线程代替吗?什么时候用多线程,什么时候用多进程
最佳答案
- 五星知识达人网友:人類模型
- 2021-03-21 04:33
进程和线程是两个概念,宏观来看,进程要比线程的颗粒度大。
一个exe,就是一个独立的进程。
而一个程序(进程),可以拥有无数多个线程。
举个例子, 打开一个Visual Studio就是一个进程, 里面的所有子功能则是一个个的线程。
所以如果是开发项目,需要多个程序之间相互调用,相互协作,那么会用到多进程开发,
如果是一个项目需要并行工作几个功能,那么多线程就可以解决问题。
一个exe,就是一个独立的进程。
而一个程序(进程),可以拥有无数多个线程。
举个例子, 打开一个Visual Studio就是一个进程, 里面的所有子功能则是一个个的线程。
所以如果是开发项目,需要多个程序之间相互调用,相互协作,那么会用到多进程开发,
如果是一个项目需要并行工作几个功能,那么多线程就可以解决问题。
全部回答
- 1楼网友:冷風如刀
- 2021-03-21 05:48
ui线程都阻塞了,整个form都停掉了,里面的控件怎么能动呢,没有办法达到你的要求。你想要实现什么功能呢?非要阻塞ui线程吗?这样对用户很不友好。
private void button1_click(object sender, eventargs e)
{
methodinvoker me = new methodinvoker(pause);
me.begininvoke(null, null); //这是异步委托调用,说白了还是开了一个单独的线程
}
private void pause()
{
thread.sleep(3000);
textbox1.text += "bbbbbbbbbbbb!\n";
}
如果你要做的事情会阻塞主线程一个时间段的话,建议你还是开一个线程去做,ui线程的阻塞就意味着form内的一切控件都会停下来等,用户界面就回出现“卡死”,这是没有办法阻止的。你看看下面这段话吧(摘自谋篇文章):
软件界面的响应特性是判断一款软件的非常重要的方面。一般来说,不管你软件功能做得有多么奇妙,如果软件有一点点死机的感觉都会让用户感到很讨厌,甚至怀疑你软件里是否藏有更大的问题。
要提高界面的响应特性,最好的办法莫过于使用多线程,并把呈现界面的线程独立出来。以前只有使用c++才能实现的多线程功能,现在在.net框架下,所有的语言(包括vb)都可以使用了。不过,使用多线程比使用单一线程要麻烦得多,比如线程之间的同步问题,做得不好很容易出错,而有的时候这种错误要开发人员花上几个星期的时间才能找到。在windows form软件中使用多线程更是有一些限制。
下面我们就把在windows form软件中使用多线程要注意的问题给大家做一个介绍。
首 先,什么样的操作需要考虑使用多线程?总的一条就是,负责与用户交互的线程(以下简称为ui线程)应该保持顺畅,当ui线程调用的api可能引起阻塞时间超过30毫秒时(比如访问cd-rom等速度超慢的外设、进行远程调用等等)就应该考虑使用多线程。为什么是30毫秒?30毫秒的概念是人眼可以察觉到的一个迟滞,大约等同于电影里的一帧停留的时间,最长不要超过100毫秒。
所以啊,多线程才是王道。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯