私たちのアプリケーションでは、ログイン画面の初期ロード用にスプラッシュスクリーンを開きます。このログオン画面は非同期で表示されます。スプラッシュスクリーンを閉じると、次のエラーが表示されることがあります。
System.ComponentModel.Win32Exception が処理されませんでした。Message="操作は正常に完了しました"
これはフォーカスを失うことと関係があり、.net 3.5 の既知のバグであることがわかりました。ただし、コードでこれを修正する解決策が見つかりませんでした。また、アプリケーションを 4.0 にアップグレードできません。
私はすでに試しました:Application.Current.MainWindow.Focus()
しかし、非同期呼び出しのために正しいスレッドにいないため、これは機能しません
誰かが以前にこの問題を抱えていて、このバグの有効な修正を提供してくれることを願っています.
これはコードであり、スプラッシュスクリーンは次のものから来ていsystem.windows.dll
ます:
Public Sub New(ByVal splashResourceName As String)
logonSplash = New SplashScreen(splashResourceName)
logonSplash.Show(False)
InitializeComponent()
GetAllInfo()
DataContext = context
End Sub
Private Sub LoginDialog_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
'Focus()
If logonSplash IsNot Nothing Then
logonSplash.Close(Nothing)
logonSplash = Nothing
End If
txtPassword.Focus()
End Sub