1

Silverlight 4 ベータ版を使用して WCF データ サービス クエリを実行するためのパターンに従おうとしています。以下は私のコードです:

    public CodeTables()
    {
        CodeCountries = new ObservableCollection<dsRealHomes.CodeCountries>();

        dsRealHomes.RealHomesEntities myClient = null;
        myClient = staticGlobals.RealHomesContext();

        object userState = null;


        myClient.BeginExecute<dsRealHomes.CodeCountries>(new Uri("CodeCountries"),
        (IAsyncResult asyncResult) =>
        {
            Dispatcher.BeginInvoke(
                 () =>
                 {
                     var test = myClient.EndExecute<dsRealHomes.CodeCountries>asyncResult).ToList();
                 }
             );
        }, userState);
    }

これは、Silverlight を使用した WCF データ サービスについて私が遭遇した多くの例から導き出されたものです。残念ながら、コードをどのように実装しようとしても、「Dispatcher.BeginInvoke」で次のエラーが発生します。

「非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です (System.Windows.Threading.Dispatcher.BeginInvoke(System.Action)」

4

1 に答える 1

1

さて、私は今答えを持っていると思います。UI ファイル (ページなど) からではなく、クラス ファイルから BeginInvoke をインスタンス化していたため、UI ディスパッチャーが使用されていなかったようです (意味がある場合)。この記事のリードを使用する:

http://gen5.info/q/2008/06/25/getting-back-to-the-ui-thread-in-silverlight-2/

提案された UIThread 静的クラスを使用し、それに RootVisual.Dispatcher を割り当てました。私のコードでは、「Dispatcher.BeginInvoke」の代わりに「UIThread.Run」を使用しています。そして、それは機能します。

于 2010-04-04T02:29:35.970 に答える