minos5000
2008-07-29, 18:14:49
Hi,
ich bin gerade dabei mein erstes Programm unter C# zu schreiben, um genau zu sein verwende ich das Compact Framework, da es auf einem Windows Mobile Gerät laufen soll.
Momentan versuche ich einen Thread einzubauen, so dass in regelmäßigen Abstanden eine bestimmte Methode aufgerufen wird, aber das ganze funktioniert noch nicht so wie gewünscht.
Der Code sieht folgendermaßen aus:
public partial class Form1 : Form
{
Thread trd;
private void startMonitoring()
{
trd = new Thread(new ThreadStart(doSomething));
trd.Start();
}
private void doSomething()
{
while(true)
{
printSignalStrength();
Thread.Sleep(5000000);
}
}
private void printSignalStrength()
{
...
}
public Form1()
{
InitializeComponent();
}
private void exitItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void menuItem1_Click(object sender, EventArgs e)
{
startMonitoring();
}
}
In "printSignalStrength()" wird die aktuelle Signalsträke ausgelesen und an eine TexBox angehängt.
Wenn ich diese Methode manuell, d.h. z.B. per Button aufrufe, wird die die Signalstärke auch korrekt angezeigt, aber seit ich die Threadlogik hinzugefügt habe hängt sich das Programm beim Aufruf von "startMonitoring()" jedesmal auf, so dass ich es von Hand abschießen muss, und ausgegeben wird natürlich auch nichts.
Woran liegt das?? Habe ich beim einbauen des Threads etwas übersehen?
vg
minos
EDIT
Btw, es sieht so aus, als ob printSignalStrength niemals aufgerufen wird. Ich hab ein paar Zeilen als Log eingefügt und diese werden nie ausgegeben. D.h. es sieht aus, als hätte
trd = new Thread(new ThreadStart(printSignalStrength));
überhaupt keine Wirkung...
ich bin gerade dabei mein erstes Programm unter C# zu schreiben, um genau zu sein verwende ich das Compact Framework, da es auf einem Windows Mobile Gerät laufen soll.
Momentan versuche ich einen Thread einzubauen, so dass in regelmäßigen Abstanden eine bestimmte Methode aufgerufen wird, aber das ganze funktioniert noch nicht so wie gewünscht.
Der Code sieht folgendermaßen aus:
public partial class Form1 : Form
{
Thread trd;
private void startMonitoring()
{
trd = new Thread(new ThreadStart(doSomething));
trd.Start();
}
private void doSomething()
{
while(true)
{
printSignalStrength();
Thread.Sleep(5000000);
}
}
private void printSignalStrength()
{
...
}
public Form1()
{
InitializeComponent();
}
private void exitItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void menuItem1_Click(object sender, EventArgs e)
{
startMonitoring();
}
}
In "printSignalStrength()" wird die aktuelle Signalsträke ausgelesen und an eine TexBox angehängt.
Wenn ich diese Methode manuell, d.h. z.B. per Button aufrufe, wird die die Signalstärke auch korrekt angezeigt, aber seit ich die Threadlogik hinzugefügt habe hängt sich das Programm beim Aufruf von "startMonitoring()" jedesmal auf, so dass ich es von Hand abschießen muss, und ausgegeben wird natürlich auch nichts.
Woran liegt das?? Habe ich beim einbauen des Threads etwas übersehen?
vg
minos
EDIT
Btw, es sieht so aus, als ob printSignalStrength niemals aufgerufen wird. Ich hab ein paar Zeilen als Log eingefügt und diese werden nie ausgegeben. D.h. es sieht aus, als hätte
trd = new Thread(new ThreadStart(printSignalStrength));
überhaupt keine Wirkung...