Открытие окна в новом потоке. Winforms

Тема в разделе ".NET", создана пользователем JEF, 17 сен 2011.

Статус темы:
Закрыта.
  1. JEF

    JEF Гость

    Есть основное окно, на котором находиться кнопка, и другие контролы. При её нажатии обрабатывается достаточное большое количество данных и эти данные выводяться в новой форме(окне). Как сделать так, чтобы при обработке данных основное окно не зависало и продолжало взаимодействовать с пользователем?

    Сделал попытку такого рода, но в этом случае второе окно открывается, и сразу исчезает.
    Код (Text):
    public partial class Main : Form
    {
    private Thread allFuncCalc;
    public Main(string[] args)
    {
    //...много кода
    allFuncCalc = new Thread(AllFuncCalc) {Name = "Function from textbox calculation"};
    }
    private void ViewFunctionButtonClick(object sender, EventArgs e)
    {
    allFuncCalc.Start();
    }
    private void AllFuncCalc()
    {
    Distribution.RandomQuantity randomQuantityToView = new Distribution.RandomQuantity(/*Параметры конструктора*/)
    //......Много кода
    View view = new View(randomQuantityToView) {Text = randomQuantityToView.DistributionType};
    view.Show();
    }
    }
    Если использовать делегаты и методы BeginInvoke и EndInvoke. То второе окно открывается, но становится зависшей. То же самое если использовать System.Threading.Tasks.Task.Factory .StartNew()
     
  2. CSerX

    CSerX Гость

    Я думаю, тебе нужно новое окно открыть от основного потока. Т.е. вызвать Invoke у основной формы и в делегате вызвать Show, тогда при закрытии потоков не будет закрываться форма
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей