Запирание GUI при использовании PrintDialog и PrintPreviewDialog в .NET

Относительно вашего комментария. Попробуйте этот пример получить данные, используя запрос MongoDB.
db.collection.find({ checkinDetails: { presenceTable: { priorityDevice : { branchId :"e63a5343-871c-47ee-8fe6-31d9b7f9fa1b1"} } } })
Дополнительную информацию вы можете найти здесь: https://docs.mongodb.com/manual/tutorial/query-embedded-documents/

5
задан EMaddox84 5 December 2008 в 00:43
поделиться

4 ответа

Необходимо, вероятно, назвать те методы в другом потоке, если они занимают много времени. Исследуйте использование BackgroundWorker для помощи Вам.

Кроме того, могло случиться так, что это из-за принтеров окон и не Вашего кода (Вы используете сетевой принтер? если так, изменение в виртуальном принтере и видит, изменяет ли это что-нибудь).

1
ответ дан 14 December 2019 в 19:29
поделиться

Другая опция вращала бы новый поток UI:

ThreadStart ts = () =>
{
    printDocument.Print();

    // Start the message loop to prevent the thread from finishing straight away.
    System.Windows.Forms.Application.Run();
};
Thread t = new Thread(ts);
t.SetApartmentState(ApartmentState.STA);
t.Start();

Следует иметь в виду, что этот код не тестируется и, возможно, нуждается в некоторой настройке (особенно часть цикла сообщения) - и Вы могли бы также хотеть иметь в виду, что необходимо будет закрыть поток в некоторое время - поэтому, возможно, Вы могли бы хотеть, чтобы класс обработал взаимодействие и пожизненное управление.

3
ответ дан 14 December 2019 в 19:29
поделиться

метод ShowDialog создает модальное окно, он блокирует основной поток. Выставочный метод создает немодальное окно, он не блокирует основной поток.

Когда Вы звоните

this.printDocument. Печать ();

это снова делает свою работу в основном потоке.

Чтобы сделать это в фоновом потоке, Вы могли попробовать что-то как (первое, что пришло на ум)

ThreadPool. QueueUserWorkItem ((obj) => this.printDocument. Печать ());

это использует новый поток для печати документа вместо основного потока GUI.

Если Вы хотите знать больше, необходимо исследовать поточную обработку

1
ответ дан 14 December 2019 в 19:29
поделиться

ТВ Dot-Net-Rocks (dnrtv) покрывает, как выполнить вещи в фоновом потоке для хранения потока GUI свободным в эпизоде 16.

0
ответ дан 14 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: