Есть метод Something
я его запускаю 100500 раз, однако объект System.Windows.Window
не исчезает из памяти.
private void Something()
{
Thread t = new Thread(()=> {
Window w = new Window() { Width = 1024, Height = 768 };
w.Show();
Thread.Sleep(1000);
w.Close();
});
t.SetApartmentState(ApartmentState.STA);
t.Priority = ThreadPriority.Normal;
t.Start();
GC.Collect();
}
Открывать окно в собственном потоке - не очень хорошая идея, обычно в поток выделяют только вычисления. Однако, в данном примере память будет освобождаться, если подписаться на событие Closed
окна и вызвать Dispatcher.CurrentDispatcher.BeginInvokeShutdown
, а после закрытия окна вызвать Dispatcher.Run
. В реальном использовании Dispatcher.Run
вызывается после открытия окна, а закрытие происходит по действию пользователя, а не программно.
private void Something()
{
var t = new Thread(() =>
{
var w = new Window() { Width = 1024, Height = 768 };
w.Show();
w.Closed += (s, ex) =>
Dispatcher.CurrentDispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
Thread.Sleep(1000);
w.Close();
Dispatcher.Run();
});
t.SetApartmentState(ApartmentState.STA);
t.Priority = ThreadPriority.Normal;
t.Start();
GC.Collect();
}
Информация отсюда.
Возникает ошибка: Сервер нарушил протоколSection=ResponseStatusLine Ссылку на ресурс дать не смогу
Есть WebMethod который принимает html и помещает в pdf файл(в темп юзера)Файл формируется, сохраняется, но это происходит незаметно для пользователя(не...
В чем различие между анонимными методами и lambda-выражениями? В анонимных методах мы можем обойтись без параметров, если даже это и ожидается: