DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■32958 / inTopicNo.1)  フォームのCloseでエラー発生する
  
□投稿者/ ルーカス 一般人(2回)-(2015/05/20(Wed) 13:28:09)
  • アイコン環境/言語:[Windows7 Pro 32bit、VB.NET .NET Framework 4] 
    分類:[.NET] 

    Form1のボタンクリックでカレンダー画面を表示し、カレンダー画面外をクリックもしくはカレンダーから日付選択時はカレンダー画面を閉じる、というプログラムがあります。
    3週間ほど前には動作していたのですが、今日動かすと、なぜかエラーが出るようになってしまいました。
    
    Public Class Form1
    
        Private fCalender As frmCalender
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If fCalender Is Nothing OrElse fCalender.IsDisposed Then
                fCalender = New frmCalender
            End If
            If Not (fCalender.Visible) Then
                fCalender.Show()
            End If
        End Sub
    
    End Class
    
    Public Class frmCalender
    
        Private Sub frmCalender_Deactivate(sender As System.Object, e As System.EventArgs) Handles MyBase.Deactivate
            Me.Close()    '←※1 これは問題なし
        End Sub
    
        Private Sub MonthCalendar1_DateSelected(sender As System.Object, e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateSelected
            Me.Close()    '←※2 ここでエラー発生
        End Sub
    
    End Class
    
    ※2のエラーメッセージは「オブジェクトの現在の状態に問題があるため、操作は有効ではありません」
    
    この時のMe.AccessibilityObjectは「破棄されたオブジェクトにアクセスできません。オブジェクト名 'frmCalender' です」となっていました。
    
    ソースを一切触っていないのに急にエラーになってしまった理由が分からず、困っています。(その間、WindowsUpdateは行っています。)
    よろしくお願いいたします。
    

引用返信 削除キー/
■32959 / inTopicNo.2)  Re[1]: フォームのCloseでエラー発生する
□投稿者/ 魔界の仮面弁士 大御所(961回)-(2015/05/20(Wed) 14:21:17)
  • アイコンNo32958に返信(ルーカスさんの記事)
    > 今日動かすと、なぜかエラーが出るようになってしまいました。

    もしかして:
     最近 KB3023224 がインストールされた形跡はありますか?

    https://social.msdn.microsoft.com/Forums/ja-JP/93b0074f-9a7c-452c-8c71-db1d4b250586
引用返信 削除キー/
■32960 / inTopicNo.3)  Re[2]: フォームのCloseでエラー発生する
□投稿者/ ルーカス 一般人(4回)-(2015/05/20(Wed) 15:30:08)
  • アイコンNo32959に返信(魔界の仮面弁士さんの記事)
    >
    > もしかして:
    >  最近 KB3023224 がインストールされた形跡はありますか?
    >
    はい。5/14にインストールされた形跡があります。

引用返信 削除キー/
■32961 / inTopicNo.4)  Re[3]: フォームのCloseでエラー発生する
□投稿者/ Hongliang 大御所(496回)-(2015/05/20(Wed) 15:42:20)
  • アイコン
    たしかにKB3023224を入れると再現するようになりますね。
    // このアップデートでWinFormに手が入ってるようだし。
    
    とりあえず定番の方法として、BeginInvokeを使ってCloseを次のメッセージに回すのはどうでしょうか。
    
    Private Sub MonthCalendar1_DateSelected(sender As Object, e As DateRangeEventArgs) Handles MonthCalendar1.DateSelected
        Me.BeginInvoke(New MethodInvoker(Me.Close))
    End Sub

引用返信 削除キー/
■32962 / inTopicNo.5)  Re[4]: フォームのCloseでエラー発生する
□投稿者/ ルーカス 一般人(5回)-(2015/05/20(Wed) 16:03:13)
  • アイコンNo32961に返信(Hongliangさんの記事)
    > たしかにKB3023224を入れると再現するようになりますね。
    > // このアップデートでWinFormに手が入ってるようだし。
    >
    > とりあえず定番の方法として、BeginInvokeを使ってCloseを次のメッセージに回すのはどうでしょうか。
    >
    > Private Sub MonthCalendar1_DateSelected(sender As Object, e As DateRangeEventArgs) Handles MonthCalendar1.DateSelected
    > Me.BeginInvoke(New MethodInvoker(Me.Close))
    > End Sub

    KB3023224の不具合かも、という感じですね。
    取り急ぎ教えていただいたBeginInvokeを使おうと思います。
    とても助かりました。ありがとうございました。

    ありがとうございます。
解決み!
引用返信 削除キー/
■32963 / inTopicNo.6)  Re[4]: フォームのCloseでエラー発生する
□投稿者/ 魔界の仮面弁士 大御所(962回)-(2015/05/20(Wed) 16:38:44)
  • アイコンNo32961に返信(Hongliangさんの記事)
    > Me.BeginInvoke(New MethodInvoker(Me.Close))

    ではなく、
     Me.BeginInvoke(Sub() Me.Close())
    もしくは
     Me.BeginInvoke(New MethodInvoker(AddressOf Me.Close))
    かな。




引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -