はじめまして、SeaViewと申します。
よろしくお願いします。

CDialogクラスから派生させたクラスを使用して
その中でワーカースレッドを1つ作成しています。
ワーカースレッド内でも作成元のクラスのメンバにアクセスできるように
クラスのポインタを渡しているのですが、
そのクラスのポインタを使用して、UpdateData関数を呼び出そうとすると

Debug Assertion Faild!
program;c:\...test.exe
file:wincore.cpp
line:884

と表示されてエラーになってしまいます。
試しに元のスレッド内のメンバ関数内で同じ処理を行うと問題なく
動作します。
ワーカースレッド内でクラスのメンバ関数を実行することはできないのでしょうか?

でも、それ以外のメンバ変数などにはアクセスしても今のところ問題ないみたいです
が。

class CFw_testDlg : public CDialog
{
public:
CFw_testDlg(CWnd* pParent = NULL); // 標準のコンストラクタ

// ダイアログ データ
//{{AFX_DATA(CFw_testDlg)
enum { IDD = IDD_FW_TEST_DIALOG };
CString m_PutMonitor;
//}}AFX_DATA

// ClassWizard は仮想関数のオーバーライドを生成します。
//{{AFX_VIRTUAL(CFw_testDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート
//}}AFX_VIRTUAL
     ...(省略)
};

BOOL CFw_testDlg::OnInitDialog()
{
  ...(省略)
  AfxBeginThread( ReceiveData, (LPVOID)this );
}

UINT ReceiveData( LPVOID pParam )
{
CFw_testDlg *pBaseDlg = (CFw_tesgDlg *)pParam;
unsigned long numXfer;

// エディットボックスに表示
pBaseDlg->m_PutMonitor = "test";
pBaseDlg->UpdateData( FALSE );
}

なにぶんVC++を初めて日が浅いためとんちんかんなことを
いってるかもしれませんがよろしくおねがいします。


_________________________________________________________________
かわいい & 使えるブラウザで、インターネット生活もっと楽しくなる!
http://explorer.msn.co.jp/