Dv
Есть способ его создать заранее, запостить вещи ему в очередь, а потом вроде стартовать
Application.Run
с этим контекстом.Size: a a a
Dv
Application.Run
с этим контекстом.AT
AT
Loaded
Dv
AT
AT
V
Dv
AT
Dv
Application.Run
, и ему нужен только цикл обработки сообщений, а вовсе не форма. И потом она же используется для Invoke
(а для этого лучше бы использовать контекст).V
Dv
ApplicationContext
, а через SynchronizationContext.SetSynchronizationContext
.Dv
var windowsFormsSynchronizationContext = new WindowsFormsSynchronizationContext();
SynchronizationContext.SetSynchronizationContext(windowsFormsSynchronizationContext);
windowsFormsSynchronizationContext.Post(new SendOrPostCallback(_ =>
{
MessageBox.Show("xxx");
}), null);
Application.Run();
V
Dv
V
V
Dv
V
var thread = new Thread(() =>
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(true);
while (!_cancellationTokenSource.IsCancellationRequested)
{
if (_formsToShow.TryDequeue(out var formToShow))
{
_formsToDestroy.Enqueue(formToShow);
formToShow.Show();
}
Application.DoEvents();
Thread.Sleep(updateIntervalMs);
}
while (_formsToDestroy.TryDequeue(out var formToDestroy))
{
formToDestroy.Close();
formToDestroy.Dispose();
}
});
V