Я, должно быть, упускаю что-то очевидное, но я просто не понимаю, почему моя основная форма в моем приложении Windows Forms отображается 20 секунд. Моя программа - это попытка взять пример кода TPL, который я нашел в примере консольного приложения, и выполнить его в форме Windows / GUI. Я ЗНАЮ, что постановка задач в очередь займет 20 секунд, но разве этот участок кода происходит так быстро, что форма не успела завершить инициализацию? Я попытался поставить задержку сразу после «InitializeComponent ();»в надежде, что это даст форме время для поднятия;а также пытался поставить только окно сообщения после, но все равно получить такую же задержку после моей вставленной задержки. Нет метода form_load, поэтому там нечего проверять.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Time the test(s)
Stopwatch stoppwatch = new Stopwatch();
stoppwatch.Start();
Console.SetOut(new ControlWriter(tb1)); // just redirects console.writeline to the form's textbox "tb1"
// #################################### job queue ########################################
var q = new TPLDataflowMultipleHandlers(); //
var numbers = Enumerable.Range(1, 10);
foreach (var num in numbers)
{
F1TimeDelay(2);
q.Enqueue(num.ToString());
}
// Stop the timer and return the elapsed number of milliseconds.
stoppwatch.Stop();
Console.WriteLine("XXXXXXXXXX <STATUS> Elapsed time = {0} minutes. XXXXXXXXXX", (int)stoppwatch.Elapsed.TotalMinutes);
}
Кроме того, когда форма, наконец, появляется, текстовое поле заполнено сообщениями, которые я ожидал увидеть иззапущенные потоки (информация, такая как идентификатор потока и т. д.).
F1TimeDelay (2) - задержка в 2 секунды, в то время как задания в очереди - это всего лишь 10-секундные задачи для демонстрации 10 задач, работающих параллельно. Числа, отправленные в очередь, в итоге становятся номерами заданий для 10 задач.