Tam Sürümünü Görmek İçin : VC++ Thread sorunu?
Visual C++ da sonsuz bir döngü içerisinde dosyadan string okuyorum ve okuduğum stringleri Listbox'a ekliyorum.Buraya kadar herşey güzel.Ben bu işlemi thread kullanarak yapmaya çalıştım fakat ListBox'a threadın içinden string ekleyemiyorm :( .Thread için AfxBeginThread fonksiyonunu kullandım yardımlarınızı bekliyorum
Kodları görmek gerek. Yoksa çok ezbere olacak.
Buyrun;
class CMyDlg : public CDialog
{
...
.....
public:
CListBox *m_datalist;
public:
afx_msg void OnBnClickedButton1();
}
//--------------------------------------------------------------------------
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_datalist=(CListBox*)GetDlgItem(IDC_LIST1);
return TRUE;
}
UINT readThread(LPVOID lParam)
{
CMyDlg *myDlg;
while(1)
{
myDlg->m_datalist->AddString("Deneme");
}
return FALSE;
}
void CMyDlg::OnBnClickedButton1() //Butona Tıklayınca hata !
{
AfxBeginThread(readThread,NULL);
}
Buyrun;
class CMyDlg : public CDialog
{
...
.....
public:
CListBox *m_datalist;
public:
afx_msg void OnBnClickedButton1();
}
//--------------------------------------------------------------------------
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_datalist=(CListBox*)GetDlgItem(IDC_LIST1);
return TRUE;
}
UINT readThread(LPVOID lParam)
{
CMyDlg *myDlg;
while(1)
{
myDlg->m_datalist->AddString("Deneme");
}
return FALSE;
}
void CMyDlg::OnBnClickedButton1() //Butona Tıklayınca hata !
{
AfxBeginThread(readThread,NULL);
}
readThread çağrısı içinde "CMyDlg *myDlg;" tanımı yapılmış, fakat o pointerın nereye işaret ettiği belli değil. Thread fonksiyonu için parametre olarak listbox'un handle değerini geçirmeyi deneyebilirsiniz, sonra o handle'ı kullanarak o elemana ulaşılabilir.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.