相关疑难解决方法(0)

发送/接收消息到/从两个运行的应用程序

我有两个名为SENDER和RECEIVER的应用程序.

RECEIVER将由SENDER以System.Diagnostics.Process.Start对象发布

RECEIVER将以隐藏模式启动,因此它没有MainWindowHandle.

然后我们无法使用Win32.WM_COPYDATA顺序发送消息给RECEIVER,因为它需要MainWindowHandle.

我需要的是通过任何方法定期发送和接收消息的能力.

我检查了以下链接的手册,MainWindowHandle但它没有帮助:

将消息发送到Windows进程(而不是其主窗口)

一个解决方案可能是一个有用的对象,System.Diagnostics.Process可以帮助我们将消息发送到进程.

c# message

9
推荐指数
1
解决办法
2万
查看次数

c ++中"main"线程的id

在c ++中有没有办法获得"主"程序线程的id?

我看到它std::this_thread::get_id()获取当前正在执行的线程的id但我需要main原始程序线程的id .我没有看到任何功能来获得这个.

原因是我有一些非线程安全的内部函数,只能在应用程序的原始线程上调用,所以为了安全我想做: -

assert(std::this_thread::get_id() == std::main_thread::get_id());
Run Code Online (Sandbox Code Playgroud)

但是当然没有这样做的功能,我看不出任何方法来获取这些信息.

c++ multithreading c++11

6
推荐指数
1
解决办法
8248
查看次数

如何确定我们是否在主线程中运行?

我们可以通过调用函数std::this_thread::get_id()的开头来获取主线程的id,main就像这个答案所暗示的那样.然后我们可以将它存储id在一个全局变量中,并与一个调用进行比较std::this_thread::get_id().

但是,这迫使我们改变main功能.有没有办法创建一个这样做的函数?我正在考虑使用用std::this_thread::get_id()表达式初始化的全局变量.由于全局变量(具有静态持续时间的变量)相对较早地初始化,因此在初始化这些变量之前,不太可能(但不是不可能,参见:延迟动态初始化)生成线程.

我还可以使用辅助函数初始化全局变量,该函数枚举所有线程并选择具有最早创建时间的线程(基于此答案).

我是多线程的新手,所以非常欢迎任何建议或指导.

c++ multithreading c++11

3
推荐指数
2
解决办法
5488
查看次数

标签 统计

c++ ×2

c++11 ×2

multithreading ×2

c# ×1

message ×1