Webサイトのサービスからアイテムのリストを取得するSilverlightアプリがあります。次の関数を使用してObservableCollectionとして渡します。
public ObservableCollection<Dictionary<string, object>> GetItems(string transetDocId)
{
ObservableCollection<Dictionary<string, object>> result = new ObservableCollection<Dictionary<string, object>>();
foreach (DataRow dr in ((DataTable)HttpContext.Current.Session["ItemDataTable"]).Rows)
{
Dictionary<string, object> tempD = new Dictionary<string, object>();
foreach (DataColumn dc in ((DataTable)HttpContext.Current.Session["ItemDataTable"]).Columns)
tempD.Add(dc.ColumnName, dr[dc.ColumnName]);
result.Add(tempD);
}
return result;
}
すべてが正常に機能していました。そして今、私が考えることができる変更なしで、それは次のエラーを返し始めました。
'http://www.example.com/Services/Example.svc'へのHTTPリクエストが、割り当てられたタイムアウトを超えました。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。
コードをステップスルーしました。クライアントでGetItemsAsync()メソッドを起動しています。サービスは呼び出しを確認し、結果を作成して返します。ただし、GetChecksCompleted()メソッドがヒットすることはありません(はい、イベントハンドラーを追加しています)。数分後、エラーが発生します。
観察可能なコレクションの代わりに1つの長いコンマ/セミコロン/パイプ区切り文字列を返し、すべてが正常に実行されるようにコードを変更してみました。
ObservableCollectionが機能しないのはなぜですか?
詳細:私が得ているエラーは、returnステートメントの直前の行にある生成されたファイルReference.csで実際に発生します。
public System.Collections.ObjectModel.ObservableCollection<System.Collections.Generic.Dictionary<string, object>> EndGetItems(System.IAsyncResult result) {
object[] _args = new object[0];
System.Collections.ObjectModel.ObservableCollection<System.Collections.Generic.Dictionary<string, object>> _result = ((System.Collections.ObjectModel.ObservableCollection<System.Collections.Generic.Dictionary<string, object>>)(base.EndInvoke("GetItems", _args, result)));
return _result;
}