でりげー

| コメント(1) | トラックバック(0)

LNK4210警告が出るのが気になっている月影です。
こんばんは。

今日も.NETとの格闘に終始しちまいました。

本日の議題。
スレッドのコールバックはスタティック関数でないとダメなのか?
これ、私としてもヒジョーに気持ち悪いのでして。
クラスメンバのクセに、自クラスのオブジェクトを直接参照できないって。

つまり。。。

class clsSample
{
public:
 int iData;
private:
 static void ThreadProc();
};

なんてクラスがあったら、ThreadProc()メソッドの中から、
iDataは直接見えないわけですよ。
でも、スレッド立てるときに渡す関数はスタティックでないとダメなわけです。

ここらへんはMSさんも気持ち悪がったみたいで、
.NETでは、デリゲートなるものを生み出したらしい。

デリートではありません。デリート。
ゲですゲ。ゲゲゲのゲ~。

すみません。

delegate と書きます。

__delegate void Func();

と宣言してやって、

Func *fnc= new Func(this, clsSample::ThreadProc)

としてしまえば、ThreadProcはスタティックにしなくて良いと。
で、このfncは、そのままスレッドのコールバックとして渡せるわけです。

Thread *thd = new Thread(fnc);

こうして何となく使い方を覚えてしまうと、
もっといいように使えないものかと、
これが配列にならないかな~なんて考えたりしたわけですが。

こういうコールバックはマトリクス管理にも使えそうなんですが、
関数の数が数だけに配列で管理したいわけですよ。
2次元くらいの。

で、今日は一日そればっかしやってました…。


結局ムリくさ。

そういやガベージコレクションでは、
ダブルポインタ以上は使えないんだったっけなぁ…。

と、覚書き。

はぁ…。
大丈夫か。明らかに見積もりをオーバーしてます。この工数。

今年は夏休みはくるのか?私。

トラックバック(0)

トラックバックURL: http://sphere42.mlexp.com/mt5/mt-tb.cgi/2096

コメント(1)

あ。正しくは、

System::Threading::ThreadStart()

という関数でデリゲートが返されるので、
スレッドにはそれを渡すのが正解。

コメントする

2018年2月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28      

アーカイブ

Powered by Movable Type 5.2.10
MLEXP.サイト内を検索
Loading
エプソンダイレクト株式会社