私のデモ アプリケーションは、MVVM パターンを WPF プロジェクトに実装しています。ViewModel は、次のようにサービス エージェント (プロキシ) を介してリモート Web サービスを呼び出します。
proxy.GetProjectList((sender, e) => this.ProjectList, username, password);
ProjectList
ViewModel で定義されたプロパティです。オブジェクトの配列を保持しCProject
ます。ビューはこのプロパティにバインドして、プロジェクト名を表示します。基本的にこれでうまくいきます。
ただしNullReferenceException
、次のifステートメントを追加すると、次のようになります。
proxy.GetProjectList((sender, e) => this.ProjectList = e.Result, username, password);
if (ProjectList.Length > 0) doSomething();
アプリケーションをデバッグすると、Webサービスが呼び出された後にProjectList
プロパティが表示されます。null
そして、私はその理由を知りません。
上記の Web サービス呼び出しは、次のように実装されます。
public void GetProjectList(EventHandler<getProjectListCompletedEventArgs> callback, string username, string password) {
proxy.getProjectListCompleted += callback;
proxy.getProjectListAsync(username, password);
}