2017-01-06 7 views
1

私が作業しているアプリケーションでは、SpotifyLocalAPIを使用し、APIが持つイベントを使用します。しかし、今数ヶ月間C#に入っている人として、私はどこから始めるべきかわかりません。イベントを使用するanother project based on this APIがありますが、それはWPFであり、正しくgoogelingを理解すれば、それは別の取引になります。これは、WinFormsでは少し違ったやり方をしなければならないことを意味しますが、どうやってどうやって判断するかはわかりません。イベントコールにSynchronizingObjectを使用する方法

APIのドキュメントには、You can set a SynchronizingObject, then the events will be called on the specific contextと記載されています。私はWPFプロジェクトがこれをどのようにしたかを見ると、ある種の魔法を務める機能(found here)とpoofを持っています。

私が正しくthis answerを理解していればSynchronizingObjectは「provides synchronous and asynchronous communication between objects about the occurrence of an event.ISynchronizeInvokeインターフェイスのプロパティです。

これまでのところ良いです。私はインターフェイスの基本的な作業、を理解していると思うが、どうすればそれを使うのだろうか?イベントに反応する必要があることをアプリケーションに納得させるにはどうすればよいですか? _spotify.SynchronizingObjectをどのように定義すればよいですか?

答えて

1

(今の私にとって一番の問題です)あなたはSynchronizationObjectIShynchronizeInvokeFormUserControlなど)を実装する任意のUI要素になるように設定することができます。 Winformsのサンプルアプリケーションhereをご覧ください。これはオプションであり、その例のアプリケーションでは、イベントハンドラでInvoke()を明示的に使用することを選択したことに注意してください。重要なことは、UIを更新する場合は、UIスレッドでコードを実行する必要があることです。これについての詳細はhereです。

+0

ありがとうございました。私は、APIが提供しているサンプルのwinformsアプリを完全に見落としました。もっとやり直してやるべきことに戻る:p – MagicLegend

+1

@MagicLegendライブラリの作者として、イベントハンドラ内のUIスレッドを呼び出すことを強くお勧めします。問題: 'SynchronizingObject'を設定すると、特定のスレッドでタイマーコールバック全体(Webリクエストを作成する)が呼び出されます。ほとんどの場合、これは望ましくない動作です。一度削除すると、.netコアのサポートが終了します。 –

関連する問題