首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TranslateMessage和DispatchMessage作用[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。 PostMessage是将消息放入到窗体的消息队列中,窗体过程需要等待一段时间,以便从队列中取出了消息之后,才处理消息 SendMessage不将消息放入消息队列,而只是把直接让窗体过程处理这个消息,所以消息一般能立刻响应。 TranslateMessage函数是将消息转化成某一个,或更多的消息,比如,当消息循环接收一个WM_KEYDOWN消息时,如果用户按下了字母键,那么TranslateMessage会产生一个WM_CHAR消息,让它跟在WM_KEYDOWN之后放入到消息队列中。 DispatchMessage函数用意是将消息交给操作系统来处理,之后操作系统会根据情况来调用窗体过程来处理消息。 Window窗体中的消息驱动实际上不是一种异步模式,而是同步模式,也就是说只有当DispatchMessage分发的消息被窗体过程处理了之后,才会回到消息循环中的GetMessage函数。

    01

    (C#)Application.Exit()、Environment.Exit(0)区别

    Application.Exit:通知winform消息循环退出。会在所有前台线程退出后,退出应用 强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执行返回给系统  方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口  Environment.Exit:立即终止当前进程,应用程序即强制退出。返回exitcode给操作系统, 相比之下Environment.Exit更狠些  因此我们可以构造以下的restart()函数重新启动应用程序          private static void ReStart()          {              Application.Exit();              System.Diagnostics.Process.Start(Application.ExecutablePath);          }  用Environment.Exit就无法完成这个功能

    04
    领券