タイトル : Re: MSCommの動作実態と多重On Error文に関して教えて下さい。 投稿日 : 2008/03/15(Sat) 09:29 投稿者 : K.J.K.
> 因みに、このPrint文では csv形式の1レコード(CR.LF付き)を書き込んでいますが、 > そのレコードの途中で、前のレコードを潰して、次のレコードの先頭が書き込まれている」 > というトラブルを招いています。 それは、単に前のレコードが書き込まれずに次へ行っただけなのでしょう。 巻き戻して書き込むなんて「高尚」な機能を備えていませんし。 > この「無難」という単語に思わず斬り込みたくなるのが、「組み込み屋」のサガでして、 > 「なんでや?」となる訳です。 それは"Windows"だからです。"Windows"は"Window"の複数形ですし、"Window" は"Message"を"Queue"に置き、それを置かれた時刻とは「無関係」に処理して いくものだからです。 # 中にはQueueに置かずに直接送られるMessageもありますが、スレッドを # 跨ぐ際にはそれでもQueueチェックが入ります。 簡単な例として、 1,Form1にTimer1を貼り付けて、Timer1.Intervalを250(ms)程度に設定しておく。 2,Timer1_Timerイベントプロシージャ中で Caption = CStr(Now) と記述し、コンパイルする。(P-CodeでもNative-CodeでもどちらでもOK) 3,コンパイルしたEXEを実行し、そのタイトルバー(Captionが出るところ)の 上にカーソルを合わせて、右ボタンを押しっぱなしにする。 これだけで、Timerイベントが抑制されることが確認できます。 # Timerイベントの元は、WM_TIMERメッセージ。 リアルタイムに反応することをアプリに要求するのならば、少なくとも その反応するスレッドは負担のかかるUserInterface(以降UIと略します) を保持するスレッドとは別のスレッドにするべきですよね。で、そういう アプリだと、VB6の機能のみでは作りにくいのが現状です。UIを持たない ActiveX EXEとして作るという手もありますが、それでもUIを持つEXEとの 通信がネックになります。 |