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

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

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

全過去ログを検索

<< 0 >>
■33957  Re[2]: vScrollBar内で重たい処理をすると動作が変になります
□投稿者/ 倉田 有大 -(2009/03/13(Fri) 22:32:34)
    ああ様、わかりやすいソースありがとうございます_(__)_さっそく試させてもらいました。
    
    private void vScrollBar1_ValueChanged(object sender, EventArgs e)
    {
    vScrollBar1.ValueChanged -= new EventHandler(vScrollBar1_ValueChanged);
    ThreadPool.QueueUserWorkItem(_callback, count);
    }
    
    private void waitCallback(object o)
    {
    Thread.Sleep(2000);
    this.Invoke(_event);
    }
    
    これだと通常動作確認しました。
    ただ、スレッドプールの後スレッドを止めていないため、スリープ中、他のコントロールとか押せてしまいますね。
    スレッドが終わるまで、他の余計なコントロールのEnabledをfalseにしようかな?
記事No.33952 のレス /過去ログ59より / 関連記事表示
削除チェック/

■48147  Re[8]: exe起動時の例外
□投稿者/ 魔界の仮面弁士 -(2010/03/25(Thu) 19:05:53)
    No48142 (だい さん) に返信
    > 上記の通り、行ってみましたが正常に動作しました。
    ではそのテストプロジェクトを、徐々に現行プロジェクトに近付けていってみてください。

    たとえば今度は、参照する DLL を実際の物に変更したうえで、
    A.EXE / B.EXE を新規作成した場合はどうなりますか?

    その結果、テストプロジェクトでも現象が再現するようであれば、DLL 側に秘密がありそうですし、
    テストプロジェクト側で再現しないようなら、現行プロジェクトの EXE 側に何かあるのかも。


    > >型定義などに漏れが無いか
    > とはどういうことが考えられるのでしょうか。
    分かりません。。。

    アプリケーションドメインやリフレクションを操作するような
    高度な事を行っているわけでも無いのですよね。


    DLL 側に、何か追加のファイルを参照設定させてみるとか、
    P/Invoke を行わせるとか、コード アクセス セキュリティに手を加えてみるとか、
    netmodule を利用させてみるなど、幾つかの実験をしてみているのですが、
    今のところ、同じ現象を再現するには至っていません。


    >>>> dllファイルを最新のものにしてもかわりませんでした。
    DLL をリビルドした後、A.EXE と B.EXE も、その新 DLL を参照しなおしてリビルドしてみましたか?
記事No.48109 のレス /過去ログ81より / 関連記事表示
削除チェック/

■63764  Re[1]: c# wpf image save
□投稿者/ 真白けい -(2012/10/06(Sat) 17:19:47)
    > エラーの際にでる文章
    > 'System.ArgumentOutOfRangeException' のハンドルされていない例外が PresentationCore.dll で発生しました。


    イメージに画像は入っていますか?
    確認してみてください。
記事No.63763 のレス /過去ログ107より / 関連記事表示
削除チェック/

■95115  Re[1]: 仕様?誤使用?
□投稿者/ 魔界の仮面弁士 -(2020/06/24(Wed) 11:32:56)
    2020/06/24(Wed) 11:34:02 編集(投稿者)

    No95114 (chobi さん) に返信
    >  if (ctr.Name == "AccountElement")
    >  {
    Controls 内に、同じ Name を持つコントロールが複数あるのでしょうか。
    デザイナー画面で貼った場合、同名コントロールは同時に存在できないハズです。
    (デザイナーを用いず、コードで生成していた場合は、同名コントロールや無名コントロールも配置可能です)

    もし、 "AccountElement" なコントロールがひとつだけなら、
    発見した時点で break; して、ループを抜けてしまえば良いと思います。



    > Controls.Remove(ctr);

    ctr.Dispose(); が漏れているように見えます。

    Panel に貼ったコントロールは、親フォームが閉じられたときに、
    一緒に Dispose されるのですが、Remove や RemoveAt した場合は、
    Controls の管理下から外れてしまうので、明示的に Dispose(); する必要があります。


    > 以下のようにforeachで列挙しながらチェック、削除していますが、
    > foreach (Control ctr in Controls)


    // 修正案1: 後ろから前に探索するようにする
    for ( int i = Controls.Count - 1 ; i >= 0 ; i-- )
    {
     Control ctrl = Controls[i];


    // 修正案2: Controls そのものではなく、そこから取り出した「削除前のコントロール一覧」を列挙する
    foreach (var ctrl in Controls.Cast<Control>().ToArray() )
記事No.95114 のレス /過去ログ165より / 関連記事表示
削除チェック/

■95116  Re[2]: 仕様?誤使用?
□投稿者/ chobi -(2020/06/24(Wed) 11:46:57)
    魔界の仮面弁士さま
    
    適切な回答ありがとうございます。
    コードで生成しているので同名です。diposeは追加しました。
    とりあえず大した要素数ではなかったので、頭からやり直すようにしました。
    後ろからアクセスする、事前に列挙す
    
            retry:
            foreach (Control ctr in Controls)
            {
                if (ctr.Name == "AccountElement")
                {
                    AccountElement ae = (AccountElement)ctr;
                    if (ae.Checked)
                    {
                        Controls.Remove(ctr);
                        ctr.Dispose();
                        goto retry;
                    }
                }
            }
    
    
    
    
    ■No95115 (魔界の仮面弁士 さん) に返信
    > 2020/06/24(Wed) 11:34:02 編集(投稿者)
    > 
    > ■No95114 (chobi さん) に返信
    >> if (ctr.Name == "AccountElement")
    >> {
    > Controls 内に、同じ Name を持つコントロールが複数あるのでしょうか。
    > デザイナー画面で貼った場合、同名コントロールは同時に存在できないハズです。
    > (デザイナーを用いず、コードで生成していた場合は、同名コントロールや無名コントロールも配置可能です)
    > 
    > もし、 "AccountElement" なコントロールがひとつだけなら、
    > 発見した時点で break; して、ループを抜けてしまえば良いと思います。
    > 
    > 
    > 
    >>Controls.Remove(ctr);
    > 
    > ctr.Dispose(); が漏れているように見えます。
    > 
    > Panel に貼ったコントロールは、親フォームが閉じられたときに、
    > 一緒に Dispose されるのですが、Remove や RemoveAt した場合は、
    > Controls の管理下から外れてしまうので、明示的に Dispose(); する必要があります。
    > 
    > 
    >>以下のようにforeachで列挙しながらチェック、削除していますが、
    >>foreach (Control ctr in Controls)
    > 
    > 
    > // 修正案1: 後ろから前に探索するようにする
    > for ( int i = Controls.Count - 1 ; i >= 0 ; i-- )
    > {
    >  Control ctrl = Controls[i];
    > 
    > 
    > // 修正案2: Controls そのものではなく、そこから取り出した「削除前のコントロール一覧」を列挙する
    > foreach (var ctrl in Controls.Cast<Control>().ToArray() )
記事No.95114 のレス / END /過去ログ165より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -