2017-01-31 39 views
2

(WgxConnection_ShouldForceSoftwareForGraphicsStreamClient):C#.NETのWPFアプリケーションがランダムにハングアップ、私は次のライブラリを使用してWPF .NETアプリケーション(.NET 4.5)を書いた

  • System.Windows.Interactivity.dll
  • Microsoft.Practicesを。 ServiceLocation.dll
  • GalaSoft.MvvmLight.Platform.dll
  • GalaSoft.MvvmLight.Extras.dll
  • GalaSoft.MvvmLight.dll
私は2つのタイマ使用

  • System.Threading.DispatcherTimerを(すべての200ミリ秒を刻み)

    • ちょうどDateTime.Nowに、標識に結合された、DateTimeプロパティを設定します。
  • System.Timers.TimerApplication.Current.Dispatcher.BeginInvokeを使用して)(毎秒ティック)テキストボックスに

    • セットフォーカス、(非同期タスクで)Webサービスからデータを要求
    • 更新データグリッドにバインドするICollectionView

アプリケーションは、(午前7時から午後5時まで)〜50のWindows 7マシンワット上で動作します何の問題もなく。それだけでランダムに高いCPU使用率と唯一のアクティブなスレッドにフリーズのみ1のWindows 7マシンで

WgxConnection_ShouldForceSoftwareForGraphicsStreamClient

Windowsのイベントログにエントリが存在しませんし、これをトリガーにユーザーイベントがありません。

これについては何も見つかりませんWgxConnection...誰にもアイデアはありますか?

EDIT:

ちょうどスニペットを見つけた "UnsafeNativeMethods.WgxConnection_ShouldForceSoftwareForGraphicsStreamClient();" MediaSystem.cs中: https://referencesource.microsoft.com/#PresentationCore/Core/CSharp/System/windows/Media/MediaSystem.cs

- > wpfgfx_v0400.dll

たぶん "RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;"行動を変えることができますか?

答えて

0

コードサンプルを見ずに問題を特定するのは難しいです。ここで

は私が

  1. 再訪コードを考えると、任意のブロックコードがあるかどうかを確認することができますことを、いくつかのポイントです。 タイマーを使用しているため、スレッドセーフリストの実装(ConcurrentQueue、ConcurrentStack、ConcurrentBag)を使用する必要があります。
  2. 1つを除くすべてのデスクトップで正常に動作している場合は、そのPCにいくつかの異なるGPUがあるかどうかを確認してください。 WPFと利用可能なGPUドライバとの間に互換性がないことがあります。
  3. System.Timers.Timerの代わりにDispatcherタイマーを使用してください。
0

ディスパッチタイマーを使用して、システムタイマーのジョブを実行することもできます。

modulus文をif(timer % 1000 == 0)にチェックしてから、非同期データリクエスト関数を呼び出してください。

主な問題については、1台のコンピュータで何が違うのか、同じグラフィックカードを使用しているのか、ドライバについてはどうですか?

ズームやその他のグラフィックエフェクトをプログラムのどこに使っていますか?

私は、そのマシンでエフェクトを実行しようとするマシンで何らかのドライバの問題が発生していて、そのシステムのグラフィックスが機能しないと考えています。何らかの理由でソフトウェアレンダリングを有効にできません。この効果は無限のループで行います。

+0

GPUに関して、これと他のPCの違いはまだわかりません。 私は、 "IsIndeterminate = true ProgressBar"以外のグラフィック効果は使用しません。バックグラウンド作業が行われている間は表示されます。 は私が原因より良い性能(デフォルトの60fpsの)に20にフレームレートを設定します。Timeline.DesiredFrameRateProperty.OverrideMetadata(... HWレンダリングは実際に私の場合には必要とされている場合、私は疑問に思うそれを無効にする可能性があるでしょう。 、設定: ProcessRenderMode。 –

+0

プログラムは中断することなく毎日実行されますが、それは毎朝朝起きます。問題は、数日おきに発生します... –

+0

fpsまたは実際のグラフィックスカード用のタイマーを使用していますかコマンド? – Slipoch

関連する問題