VB.NET質問スレ(Part35)at TECH
VB.NET質問スレ(Part35) - 暇つぶし2ch41:デフォルトの名無しさん
10/09/26 23:46:48
VB2005を使ってRS232C接続機器の制御用アプリを作っています。シリアルポートを直接制御している部分はDLLになっており、
別担当者が開発しています。
問題は、そのDLL内のあちこちでDoEventsを呼び出していること。シリアルがらみなので別スレッドで動いているにもかかわらず、
何かしらシリアルデータのやり取りが発生するとDoEventsを呼んでくれます。

非同期にDoEventsが呼び出されるおかげで、アプリの終了処理中などウィンドウの構成やら何やらが変化しているときにも、
非同期にイベント処理が走ってエラーが出ます。

そこで、対処療法ですが、フックするなどして、DoEventsを有効/無効と切り替える方法を教えて頂けないでしょうか。
DoEventsOff():DLL内ルーチン呼び出し:DoEventsOn()、みたいな感じでDoEventsの無効有効を切り替えるイメージです。

ここからは言い訳。

本来はDLL内でのDoEventsの呼び出しを止めるべきなのですが、残念ながら、DLLのメンテ担当者にその気が無いのです。

部署内での打ち合わせでDLLの改善を提案したりしたんですが、本人の作っているアプリでは個別に回避処理を入れるやり方で対応できている、
DoEventsを止めるとGUIの動きがぎこちなくなるからダメだ、という事でやはり拒否。上長も、このDLLは別部署でも使っていることもあり、既にリリースしているDLLを
差し替えることにはかなり否定的な立場をとってます。

ここは気合いで同機能のDLLを作って・・・ということができればカッコいいんですが、DLLを置き換えると、メンテ業務や部署内外への周知やサポートも一緒に
引き継ぐことになっちゃうので、二の足を踏んでます。
現時点ではそのDLL担当者がこういう雑務も引き受けてくれてるので、やはり強いことは言えません。

ということで、質問に戻りますが、DoEventsをフックし、有効/無効を切り替える方法を教えて頂けないでしょうか。

よろしくお願いします。



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch