Используя JOIN
делает код легче читать, так как это очевидно.
нет никакого различия в скорости (, я только что протестировал ее ), и план выполнения является тем же.
Вы можете сделать это в WPF с помощью HwndSource.AddHook :
private HwndSource hwndSource;
void MyWindowClass_Loaded(object sender, RoutedEventArgs e)
{
hwndSource = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
hwndSource.AddHook(new HwndSourceHook(WndProc));
}
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
// Process your windows proc message here
}
К сожалению, для консольного приложения не существует реального эквивалента. Сообщения Windows, по определению, отправляются и принимаются дескриптором окна (HWND), поэтому они действительно предназначены для использования с приложениями с графическим интерфейсом.
Есть много других, менее странных способов выполнения межпроцессного взаимодействия. однако связь в Windows . Мне лично нравится использовать каналы - настройка именованных каналов очень хорошо работает как в машинном, так и в управляемом коде и очень эффективна для взаимодействия между двумя программами.