C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■6849  Re[2]: Control.Invokeが使えない件。
□投稿者/ れい -(2007/08/25(Sat) 02:34:12)
    2007/08/25(Sat) 02:48:14 編集(投稿者)
    No6846 (NyaRuRu さん) に返信
    > 2007/08/24(Fri) 23:14:17 編集(投稿者)
    > ■No6843 (れい さん) に返信
    >>Control.InvokeやEndInvokeを何も考えずに使うと、
    >>Controlを廃棄した際にデッドロックします。
    >
    > ほんとかなと思って試してみましたが,
    > 以下のケースでは閉じたフォームに対する Invoke で InvalidOperationException 例外が発生しました.

    スレッド間通信の問題ですので、一回だけでは再現しない場合もあります。
    連続で何回も行ったり、高負荷時に試さなくてはいけません。
    ダメな同期機構だと、開発時には大丈夫なのに、ある環境ではいつもダメ、
    見たいなことがありますので、たくさん試して1回でもダメならダメです。
    問題ないことの証明は激しく難しいですが。

    適当な時間経ったら自動で閉じるFormをつくり、
    延々とFormを作ってはInvoke、Formを作ってはInvoke、を繰り返して確認したところ…
    Invokeで発生する可能性のある例外は、
    ・InvalidOperationException
    ・ObjectDisposedException
    ・System.ComponentModel.InvalidAsynchronousStateException(2.0のみ
    でした。
    また、600〜3000回に1回ほどInvokeでフリーズしました。
    Invoke先で何もしないと3000回試してもフリーズしませんでした。
    (最初は2回に1回くらいだったんですが、再起動したら減りました。)
    環境とかで問題が発生する確率が大きく変わるので頻度は参考程度ですが、
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=6760 のコードでは
    デッドロックが起こりえることは間違いありません。

    > 別スレッドでウィンドウを開いていますよね? あれって
    >略
    > みたいなことをしたいということなのでしょうか?

    あのスレッドではそうでしょう。
    あんまりないですが、こういう仕様にしたいときもたまにあります。
    Control.InvokeはGUIが無くても止まりますので、今回はあまり関係ないです。

    No6847 (渋木宏明(ひどり) さん) に返信
    > Control.Invoke() が最終的に SendMessage() を呼び出しているなら、存在しないウィンドウへの SendMessage() はブロックではなくエラーになるはずで、その時例外が発生するというのは(とりあえずは)納得できる実装です。

    はい。おかしいときに例外は正しい。私もそれを期待します。
    デッドロックは困る。

    ちなみに、Control.InvokeはPostMessageを使っています。

    > Control.Invoke() で立ち往生するケースがあるということですが、SDK レベルで SendMessage() を使っていても、使い方がまずければデッドロックします。
    > なので、Control.Invoke() でデッドロックするのも似たような状況なんじゃないかなーと。

    変な使い方をすればうまく動かないってのはなんでもそうなので、いいと思います。
    Control.Invoke()でデッドロックしないコードが見当たらないのが
    問題ではないかと。

    Invoke先で何もしなければ今のところデッドロックは起こしませんが、
    何もしなければInvokeの意味がないですし、
    本当にデッドロックしないかもわかりません。
    もしかしたら条件によってはロックするかも知れません。

    どういうInvoke内容だったら安全なんでしょうか?
    MSDNをいくら読んでも、どこを探しても、明確な指針が見当たりません。
    それで皆さんの意見を聞きたかったのです。

    話の内容からすると、
    Nyaruruさんも渋木宏明(ひどり)さんも、
    Control.Invokeのデッドロックに遭遇したことがないようですね。

    以前問題を見つけたときはほぼ毎回デッドロックしてたんですが、
    今調べてみると、たまにしか止まらなくって検証が大変です。
    はてさて、どうしたものか。
記事No.6843 のレス /過去ログ18より / 関連記事表示
削除チェック/

■18883  Re[2]: データーベースと連結しているListboxの値の取得方法
□投稿者/ スライム -(2008/05/17(Sat) 07:27:30)
    No18409 (癒耶 さん) に返信

    お礼が遅くなりまして申し訳ありません。
    当方の不勉強でした。エラーの内容はよく理解できました。
    Object型のSelectedItemをどのようにしてString型に変換するか色々悩んだのですが(Cstrなどで一発変換はできませんでした)
    なんとか以下の方法でエラーが解消されました。(もっとスマートな方法があればご教示いただければ幸いです)
    どうもありがとうございました。

    MsgBox(CType(CType(Me.ListBox1.SelectedItem, DataRowView).Item(1), String))


    > SelectedItemはObject型なので正しい型に変換してあげる必要があります。
    > MsgBoxにListbox1.SelectedItemをそのまま入れようとするとObject型のままでは表示出来ないので
    > String型に変換しようとします。
    > この時Listbox1.SelectedItemの中身が実際にはString型では無かった時、上記のエラーが発生します。
記事No.18406 のレス / END /過去ログ37より / 関連記事表示
削除チェック/

■24853  Re[1]: DataGridViewについて
□投稿者/ カドルドエグ -(2008/09/11(Thu) 10:48:05)
    No24851 (初心者 さん) に返信
    > (プロパティで設定できないとは思いますが)
    「さわれない」「編集できない」といった『状態』(を設定する箇所)こそがプロパティです。
    「こういう動きをさせたい」と考えたときはメソッドを調べるのがよいし、
    「こういう状態にしたい」と考えたときはまずそのコントロール(クラス)がどんなプロパティを持っているかを調べてみましょう。
記事No.24851 のレス /過去ログ46より / 関連記事表示
削除チェック/

■89824  Re[3]: DockPanel Suiteでコントロールが表示されない
□投稿者/ Miki -(2019/01/05(Sat) 23:14:45)
    別のPC(Win10Pro(64bit), Visual Studio 2017)で同様のコードを書いて実行したらDocumentでもLabelが表示されました。

    前のPCはスケーリングなどの設定を変更したので、なにか影響したのかも??

    とりあえず標準的な環境であれば問題は無いと思いますので、解決済みにしたいと思います。
    どうもありがとうございました。
記事No.89818 のレス / END /過去ログ154より / 関連記事表示
削除チェック/

■97685  Re[5]: オートコンプリート機能
□投稿者/ WebSurfer -(2021/06/29(Tue) 12:30:24)
    No97684 (ななし さん) に返信

    質問者さんが言うオートコンプリートとは以下の記事のものですか?

    オートコンプリート機能で独自の補完候補を使用するには?
    https://www.atmarkit.co.jp/fdotnet/dotnettips/423autocompsource/autocompsource.html

    それのドロップダウンに現れる候補の順番を変えたいということですか?
    とすると、どのように変えたいのですか?
記事No.97672 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97691  Re[6]: オートコンプリート機能
□投稿者/ ななし -(2021/06/29(Tue) 16:33:10)
    No97685 (WebSurfer さん) に返信
    > ■No97684 (ななし さん) に返信
    >
    > 質問者さんが言うオートコンプリートとは以下の記事のものですか?
    >
    > オートコンプリート機能で独自の補完候補を使用するには?
    > https://www.atmarkit.co.jp/fdotnet/dotnettips/423autocompsource/autocompsource.html
    >
    > それのドロップダウンに現れる候補の順番を変えたいということですか?
    > とすると、どのように変えたいのですか?

    張っていただきましたURLの機能です。
    候補の順番を変えたいと思っています。
    基本は五十音順になると思うのですが、それを特定の候補を
    上位に出るようにしたいと思っています。
記事No.97672 のレス /過去ログ169より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -