Hallo,
Ik wil graag vanuit een Console applicatie een windows Form starten en gedurende de hele tijd dit form kunnen updaten.
Ik weet al dat ik moet werken met meerdere threads maar kom er niet uit om het werkend te krijgen.
Als ik een nieuw form aanmaak (ui.ShowDialog()), dan doet stopt hij met uitvoeren van de code totdat ik het form sluit, terwijl ik dit net niet wil.
Weet iemand een oplossing?
Bedankt
Dit heb ik tot nu toe:
Edit, heb ook het volgende geprobeerd maar ook hierbij lukt het niet:
Ik wil graag vanuit een Console applicatie een windows Form starten en gedurende de hele tijd dit form kunnen updaten.
Ik weet al dat ik moet werken met meerdere threads maar kom er niet uit om het werkend te krijgen.
Als ik een nieuw form aanmaak (ui.ShowDialog()), dan doet stopt hij met uitvoeren van de code totdat ik het form sluit, terwijl ik dit net niet wil.
Weet iemand een oplossing?
Bedankt
Dit heb ik tot nu toe:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UserInterface
{
class Program
{
class Class2
{
UserInterface ui = new UserInterface();
[STAThread]
static void Main()
{
Class2 t = new Class2();
t.createForm();
t.test();
}
private void createForm()
{
ui.ShowDialog();
}
public void test()
{
Thread t = new Thread(new ThreadStart(StartNewStaThrea));
t.Start();
}
private void StartNewStaThrea()
{
ui.toonAlles();
}
}
}
}
Edit, heb ook het volgende geprobeerd maar ook hierbij lukt het niet:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UserInterface
{
class Program
{
class Class2
{
UserInterface ui = new UserInterface();
int i;
[STAThread]
static void Main()
{
Control.CheckForIllegalCrossThreadCalls = false;
Class2 t = new Class2();
t.test();
}
public void test()
{
Task task1 = Task.Factory.StartNew(() => StartNewStaThrea1());
Task task2 = Task.Factory.StartNew(() => StartNewStaThrea2());
Task.WaitAll(task1, task2);
ui.ShowDialog();
Console.ReadKey();
}
private void StartNewStaThrea1()
{
i = 0;
while (i < 20000)
{
ui.toonHuidig(i);
i++;
}
}
private void StartNewStaThrea2()
{
if (i == 10000)
{
ui.update();
}
}
}
}
}
Laatst bewerkt: