DOBON.NET DOBON.NETプログラミング掲示板過去ログ

RichtextBoxのスクロールによる不正落ち

  • 題名: RichtextBoxのスクロールによる不正落ち
  • 著者: カナリア
  • 日時: 2007/07/21 11:49:22
  • ID: 20109
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[WindowsXP、.NET Framework2.0、VB.net]
分類:[.NET]

先日振りです。
度々で申し訳ないのですが、再び質問に参りました。
以前の質問に対するご返答は大変参考になりましたので、
またご教授願えれば幸いです。

現在チャット形式で、サーバーを用いて、発言をリッチテキストボックスに反映するソフトを作成しています。

複数行のテキストボックスに入力された文字に色やフォントサイズを指定して、それらを全て一行の文字列としてサーバーに送り、接続者全員にその文字列を送った後、クライアント内で、再び解釈してログボックス(リッチテキストボックス)に表示する形式です。
文字列を表示した際、ログボックスの最後の行に遷移する処理を入れています。


送受信に関しては問題なく動いているのですが、メッセージ受信の際、ログボックスを最後の行に、自動スクロールさせる処理の中で、ソフトがフリーズしてしまうことが有ります。

ソースは以下の通りです。

'文字列をログボックスに反映
reLogBox.AppendText(str & vbNewLine)
'最下行までスクロール
If disAutoScroll.Checked = False Then
reLogBox.SelectionStart = reLogBox.Text.Length
reLogBox.Focus()
reLogBox.ScrollToCaret()
End If

自動スクロールに関しましては本サイトを参考にさせて頂き上のように行っています。
必ず起こるのではなく、200〜1000行程度の送信の間で時折起きます。
偶発的なものかと思いましたが、自動スクロールを行っていると必ず落ちるので、どこかに原因が有るかとも思いました。

ちなみにログの自動スクロールを切って、テストを行ったところ、5000行以上の送信を行ってもフリーズすることは有りませんでした。
何度もテストを行って確認を取ったので偶然、ということはないかと思われます。

一通り検索を行ってみましたが、これに該当するエラーは見つけられませんでした。

どこか処理的に間違っているところは有りますでしょうか?
また、上の手段の他に、スクロールを行える方法は有りますでしょうか?


何とも分かり難い文章になってしまいましたが、宜しくお願いいたします。
Win32APIにあるWM_VSCROLLを使用することで解決致しました。
お騒がせしてすみませんでした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板