, Vista . WM_ACTIVATEAPP, , . , , , "" .
Barrier.SignalAndWait(). , STA. CLR - , , . , WM_ACTIVATEAPP, , 30 , . - . , . , .
, . , CLR . , . - , SynchronizationContext.Wait(). , , WindowsFormsSynchronizationContext , Wait(). Reference Source / . .
, , :
using System.Runtime.InteropServices;
class MySynchronizationContext : SynchronizationContext {
public MySynchronizationContext() {
base.SetWaitNotificationRequired();
}
public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) {
return WaitForMultipleObjects(waitHandles.Length, waitHandles, false, millisecondsTimeout);
}
[DllImport("kernel32.dll")]
static extern int WaitForMultipleObjects(int nCount, IntPtr[] lpHandles,
bool bWaitAll, int dwMilliseconds);
}
:
System.ComponentModel.AsyncOperationManager.SynchronizationContext =
new MySynchronizationContext();
, SetWaitNotificationRequired() CLR, Wait() Wait(). Wait() , . , .