为什么需要线程

use*_*430 1 vb.net

我是一个桌面应用程序的新手,并且看到到处都有线程使用.

我不明白为什么我们在这里使用它而不是在webapplications中.

我们可以直接调用方法而不是线程.

Wil*_*ean 6

"无处不在的线程"可能是未来出现问题以及可能过去无能的不祥标志,但人们在桌面应用程序中使用多个线程的主要原因是允许长时间运行的事情发生而不会冻结应用程序的用户界面.

传统的Windows GUI应用程序具有"主线程",其负责处理从OS接收的消息.这些消息用于所有鼠标/键盘交互,因此当您停止处理它们时,应用程序停止响应(在几秒钟之后,Windows本身将使应用程序变灰并在标题栏中放置"停止响应". )

为了避免这种丑陋,人们移动需要很长时间的活动(因为他们需要大量的CPU,或者因为可能正在等待I/O(磁盘,网络等))到其他线程上.这意味着主线程可以自由地保持泵送消息.

您没有明确启动主线程 - Windows会在应用启动时将其提供给您.

你需要非常小心后台线程和主线程之间的交互 ​​- 有一堆规则和限制,如果不遵循它们就会给你带来一些问题,这些问题可能不会立即,一致或在你的机器上出现所有.这并不意味着他们不在那里......