JoachimJogi
Mitglied
Hi,
hier ein kleines Testprojekt, welches mein Problem auf das mindeste reduziert.
|----------------------|
| Button1 |
|----------------------|
| m_strLog |
|----------------------|-
Wenn Buton1 gedrückt wird, soll ein Thread gestartet werden, der jede Sekunde einen Punkt in das EditFeld m_strLog hinzufügt.
Warum funktioniert das nicht so wie unten beschrieben?
Wenn ich mit dem Debugger durchsteppe, wirft die wincore.cpp einen Fehler beim UpdateData(false). Es funktioniert einwandfrei, wenn ich das UpdateData rausnehme und manuell (mit einem weiteren Button) ab und zu aufrufe, aber der Thread soll selbstständig aktualisieren, wenn er etwas hinzugefügt hat.
Ist das nur ein Arbeitsthread, der keinen Zugriff auf die Dialogelemente hat? Eigentlich wollte ich mit der thrFunction mir wieder Zugriff auf die Klassenvariablen verschaffen...gilt das nicht für die Dialogelemente?
Vielen Dank!
hier ein kleines Testprojekt, welches mein Problem auf das mindeste reduziert.
|----------------------|
| Button1 |
|----------------------|
| m_strLog |
|----------------------|-
Wenn Buton1 gedrückt wird, soll ein Thread gestartet werden, der jede Sekunde einen Punkt in das EditFeld m_strLog hinzufügt.
Warum funktioniert das nicht so wie unten beschrieben?
C++:
void CTTTDlg::OnButton1()
{
UpdateData(true);
CWinThread* pThread = AfxBeginThread (thrFunction, this);
}
UINT CTTTDlg::thrFunction(LPVOID pParam)
{
CTTTDlg* pDlg = (CTTTDlg*) pParam;
pDlg->thrRun();
return 0;
}
void CTTTDlg::thrRun()
{
while(1)
{
m_strLog+=".";
UpdateData(false);
Sleep(1000);
}
}
Wenn ich mit dem Debugger durchsteppe, wirft die wincore.cpp einen Fehler beim UpdateData(false). Es funktioniert einwandfrei, wenn ich das UpdateData rausnehme und manuell (mit einem weiteren Button) ab und zu aufrufe, aber der Thread soll selbstständig aktualisieren, wenn er etwas hinzugefügt hat.
Ist das nur ein Arbeitsthread, der keinen Zugriff auf die Dialogelemente hat? Eigentlich wollte ich mit der thrFunction mir wieder Zugriff auf die Klassenvariablen verschaffen...gilt das nicht für die Dialogelemente?
Vielen Dank!