-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Oh, dann muss ich es noch mal ändern.
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Puh. Also so habe ich es jetzt und so geht es auch:
private delegate void ThreadFinishEventHandler(object Sender);
private event ThreadFinishEventHandler OnThreadFinishHandler;
private void OnThreadFinish()
{
if (OnThreadFinishHandler != null)
OnThreadFinishHandler(this);
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
:firejump: So geht es. :P
Noch ein letzter Punkt, dann haben wir es geschafft. ;)
Die BackgroundWorker Komponente hat j aein Ereignis, welches ausgelöst wird, wenn er fertig ist. Wie kann ich jetzt mit der Thread-Klasse warten? Mittels join friert mir die ganze Anwendung ein:
private void button1_Click(object sender, EventArgs e)
{
if (rbThread.Checked)
...
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Langsam. Wie eght das jetzt mit dem delegate genau? Ich wollte die Methode auch an anderer Stelle nutzen, als normale Methode.
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Gott sei dank ist in zwanzig Minuten Feierabend.
Und wie und wo implementiere ich, was der delegate machen soll?
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Ich verzweifele noch mal an diesen delegate und Invoke.
private void SetStatusText(string Text)
{
lblStatusText.Text = Text;
this.Update();
}
void ThreadProc()
{
try
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Jetzt schlägt allerdings die Aktualisierung im finally-Abschnitt fehl:
:wall:
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Oh, dann habe ich ja gar nicht das was ich wollte. Mist. Wie mache ich es denn richtig?
private void button1_Click(object sender, EventArgs e)
{
if (rbThread.Checked)
{
try
{
t = new Thread(ThreadProc);
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Gut, dann ist Abort doch richtig.
allerdinsg scheint nichts zu passieren:
private void btnStop_Click(object sender, EventArgs e)
{
if (rbThread.Checked)
{
t.Abort();
}
else
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Das ist ein Argument. So funktioniert es:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100000; i++)
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
}
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
So wir haben es gleich geschafft. Nur noch zwei, drei Dinge.
Ich rufe die Methode CancelAsync() auf, um den BackgroundWorker zu stoppen. Allerdings schein dann das Fenster nicht mehr zu reagieren und gestoppt wird anscheinen auch nichts:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (backgroundWorker1.CancellationPending)
...
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Ich versinke dann mal eben im Boden - bin gleich wieder da.
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Es passiert zur Laufzeit und zwar in dieser Zeile:
backgroundWorker1.ReportProgress((int)i / 10);
Deine Lösung dürfte also das Problem nicht beheben.
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Langsam, langsam langsam. Anstatt mit immer neuen Lösungen zu kommen, wäre es mir lieb, wenn wir erstmal meine Probleme mit den vorhandenen Lösungen besprechen könnten.
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
14. Mär 2008
Es sollen nur Demos für mich sein, um zu verstehen, wie Threads unter .NET funktionieren.
Wenn ich es jetzt wie vorgeschlagen mache, bekomme ich folgende Fehlermeldung:
Mein Code:
private void button1_Click(object sender, EventArgs e)
{
if (rbThread.Checked)
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
13. Mär 2008
Das habe ich jetzt mal gemacht:
private void button1_Click(object sender, EventArgs e)
{
if (rbThread.Checked)
{
Thread t = new Thread(ThreadProc);
t.Start();
}
else
{
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
13. Mär 2008
Also ich habe es jetzt so gelöst:
private void thread1_Event(object sender, EventArgs e)
{
if (InvokeRequired)
{
Invoke(new EventHandler(thread1_Event));
}
else
{
for (int i = 0; i < 1000; i++)
-
Forum: Win32/Win64 API (native code)
C#
by Luckie,
13. Mär 2008
Ich versuche gerade rauszufinden, wie man mit Threads unter C# arbeitet. Anscheinend gibt es da ja zwei Möglichkeiten, entweder mit dem Thread-Objekt oder der BackgroundWorker Komponente.
Ich würde gerne beides verstehen und benutzen können. Nur leider scheitere ich schon bei der Thread-Klasse:
private void ThreadProc()
{
lock (this.listBox1)
{
...