2014-02-12 6 views
1

Приложение My Winforms должно запустить одно или несколько немодальных окон просмотра отчетов, после чего основное окно будет посвящено его бизнесу (включая открытие модальных диалогов). Я нашел код, приведенный ниже (по H. Passant) в earlier article:Запуск окна просмотра немодальных отчетов

private void button1_Click(object sender, EventArgs e) { 
    var t = new System.Threading.Thread(() => Application.Run(new Form2())); 
    t.SetApartmentState(System.Threading.ApartmentState.STA); 
    t.Start(); 
} 

В моем случае «Form2» содержит один элемент управления стыковка ReportViewer настроить для отображения нужного отчета [новый frmRptView (sReport, aRptParams) ].

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

Редактировать: Каким образом можно запустить немодальное окно, чтобы оно не зависело от главного окна приложения?

+0

Возможно, недостаточно информации для диагностики проблемы. Не могли бы вы предоставить более подробную информацию? – jww

+0

Почему этого недостаточно, чтобы открыть новое окно в обычном режиме? –

+0

Я пробовал использовать form.Show() сначала, но эти окна тоже не реагировали. Я перефразирую вопрос. – kaborka

ответ

0

Если вам нужно показать немодальное окно, которое не имеет большей продолжительности жизни, чем основное окно, просто создайте экземпляр вашей формы и покажите его с помощью обработчика щелчка. Это просто и намного безопаснее, чем создание нескольких потоков пользовательского интерфейса.

private void button1_Click(object sender, EventArgs e) 
{ 
    (new Form2()).Show(); 
} 
+0

Это то, что я использовал, прежде чем пытаться использовать многопоточный подход. Пользователи постоянно сообщали о том, что окна просмотра не реагируют. Я думал, что это может быть связано с модальными формами, используемыми в главном окне, поэтому я попробовал подход MT. Я никогда не мог воспроизвести поведение. Любые идеи, которые могут заставлять незамодные окна зрителя блокироваться? – kaborka

+0

Проверьте, есть ли что-то в окнах просмотра, которые вызывают утечку ресурсов или вызывают всплеск в использовании. Все соединения для запроса отчета закрываются после получения данных. Поскольку это окна просмотра отчетов, которые становятся невосприимчивыми, проблема должна быть исследована внутри этого элемента управления. –