C ++跳转到事件处理程序

c++ jump to eventhandler

我正在为 C++ 中的 GUI 应用程序苦苦挣扎。

点击按钮激活例程,这可能需要一些时间。 window 然后没有响应。 我希望它能保持倾听和反应。 我听说了ISR,这似乎不合适,因为我不想继续我离开的地方,而是忘记中止的程序并重新开始。

请不要对我苛刻。 如果你能指出我有用的地方,我会很高兴。我真的花了两个小时发现没有任何帮助(对我来说,可能是我的错)。

确切的解决方案将在很大程度上取决于您尝试做什么,以及您尝试使用什么(工具包等)。

快速(给出,而不是做)的答案是为您的工作使用一个单独的线程。你有一个线程用于你的 GUI 东西,当用户点击一个按钮时,你会从你的 GUI 线程向你的工作线程发送一条消息。

如果您使用的是 C++11 或更高版本,则可以使用 std::thread 来实现线程。否则,您将不得不使用平台上可用的任何内容。这些 API 通常都是很低级的。

std::async操作水平略高。您正在使用的 GUI 工具包可能有一些东西。无论您选择什么,它都不会像同步的单线程程序那样 'simple'。

一般来说,在软件设计中越早考虑线程策略,就越容易实现。向完善的程序添加多线程通常非常困难。

如果这 'vague' 超出您的预期,我们深表歉意。也许如果你添加更多关于平台和工具包的细节,人们将能够提出更具体的建议?

祝你好运!