現役プログラマー村健の、投資に役立つプログラムを作るための勉強ブログです。 自動売買、システムトレードに挑戦!します。 勉強と習得の成果を記録です。
本ブログについて
本ブログは、プログラマー観点で投資への対費用効果を上げるために何ができるか?を考えていくブログです。
基本的には、ツール作成・公開、投資に関わるプログラム情報、最終的には 完全なる自動売買を目指しています。

現在、HPの方で現在作成中のツールや発注ロジックなどを公開中です。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
技術メモ的なものです。

「楽天RSS疑似データ送信ツール」は、データを連続送信している最中にFormの「停止」ボタンを押せるようになっていますが、これはマルチスレッドで実装しているのではなく、Application.DoEventsしているだけです。

そこで、スレッドの勉強をかねてマルチスレッド化に挑戦してみました。
送信時は、送信用のスレッドを立ち上げて、そこでデータ送信するイメージです。

実装として、FormのLoadイベントではDdeInitializeとDdeNameServiceを実行し、送信用のスレッドで立ち上げ、そこではDdePostAdviseを実行するようにしました。
しかし、送信前のCreateStringHandleでハンドル?が取得できず(0がとれる。何かエラーがでてた)、データの送信ができませんでした。

初期化とデータ送信を異なるスレッドで実行する(それぞれのAPIを呼ぶ事ね)とダメになってるっぽいです。
ネットで色々調べてみたのですが、知識不足もあり、原因は解明できず。
STA/MTAが関係しそうな気もしますが、色々試してみるもダメ。
(MainからSTAで起動するようにしたり、スレッドをSTAで実行するようにしてみたり)

結局元のApplication.DoEventsに処理を戻すことにしました。
残念。。。

原因&対処がわかる方がいれば、教えていただけるとありがたいです。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://investprogrammers.blog70.fc2.com/tb.php/253-54994beb
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。