C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: スレッドの引数について


(過去ログ 61 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■35320 / inTopicNo.1)  スレッドの引数について
  
□投稿者/ Take (7回)-(2009/04/24(Fri) 13:38:05)

分類:[C/C++] 

現在VC++ 2008の環境で、プログラムを始めたばかりの初心者です。

今、スレッドを使用して、テキストボックスに入れたString^型の変数を、スレッドの引数として指定してスレッドの作成・起動を
行いたい。しかし、制御関数に渡すパラメーターの型がLPVOIDやvoidなので、どうにかしてString^型を関数に渡す方法を考えているのですが、始めたばかりなのでよく分かりません。marshal_asを使って型変換を行っているサイトもあり試してみましたが、エラーになってしまいます。

引用返信 編集キー/
■35321 / inTopicNo.2)  Re[1]: スレッドの引数について
□投稿者/ rink (2回)-(2009/04/24(Fri) 13:51:56)
類似スレ
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200904/09040018.txt

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200904/09040012.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200904/09040014.txt
引用返信 編集キー/
■35322 / inTopicNo.3)  Re[1]: スレッドの引数について
□投稿者/ επιστημη (1899回)-(2009/04/24(Fri) 14:00:03)
επιστημη さんの Web サイト
2009/04/24(Fri) 14:03:06 編集(投稿者)
> 制御関数に渡すパラメーターの型がLPVOIDやvoidなので、
> どうにかしてString^型を関数に渡す方法を

↓こーゆーことやりたいのかな?

#include <msclr/gcroot.h>

struct folder {
  msclr::gcroot<System::String^> str;
};

void func(void* arg) {
  folder* fp = static_cast<folder*>(arg);
  System::Console::WriteLine("{0}、いただきましたぁ!", fp->str);
}

int main() {
  folder f;
  f.str = gcnew System::String(L"★みっつ");
  func(&f);
}

渡したいのが String^ だっつーから gcroot でくるんだけども、
ホントに渡したいのは何なんだろ。
wchar_t* ? それとも shift_jis化した char* ?

引用返信 編集キー/
■35324 / inTopicNo.4)  Re[2]: スレッドの引数について
□投稿者/ Hongliang (372回)-(2009/04/24(Fri) 14:31:20)
System::Threading::Thread クラス使えば ParameterizedThreadStart で Object^ 渡せるからキャストで十分ですけど。
http://msdn.microsoft.com/ja-jp/library/6x4c42hc(VS.80).aspx
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -