最近、WCFサービスを使用して非同期タスクを処理するSilverlight Webプロジェクトを継承しました。私は最近、新機能を追加しました。基本的にはすでに存在していた機能のコピーを基本的にコピーしていますが、この新しい機能は壊れています。非同期メソッドが呼び出されると、引数の1つが渡されないように見えます。代わりに、呼び出されたメソッドではnullになります。ここでBeginInvoke引数がサービスでnullになる
は、サービスを呼び出す方法です:
public IAsyncResult BeginAssignTrucks(OutageGroupSafe outageGroup, List<Truck> trucksArrived, List<Truck> trucksRacked, AsyncCallback callback, object asyncState)
{
return BeginInvoke("AssignTrucks",
new object[] { outageGroup, trucksArrived, trucksRacked },
callback,
asyncState);
}
OutageGroupSafe
は、カスタムタイプです。私はまたタイプList<Truck>
の2つのオブジェクトを渡していることがわかります。
それでは、プログラムの流れは、最終的にWebサービスへの、そして私は尋ねたAssignTrucks
方法を乗り越える:
public OperationBase AssignTrucks(OutageGroupSafe outage, List<Truck> trucksArrived, List<Truck> trucksRacked)
{
// there is stuff here but it really doesn't matter what it is for the purposes of this question
}
を私はその関数にブレークポイントを設定した場合、私は、パラメータoutage
がnullであることを確認他の関数で渡されたパラメータはそうではありませんでした。さらに、2つのList
は完璧です。私はこの呼び出しのために私のコードを何度も同様の呼び出しに対して何度もチェックしています。はと思われます。他の方法では問題のないタイプOutageGroupSafe
のオブジェクトを送信できます。問題のある新しいものだけです。 タイプがであってもそれは問題ではありません。代わりにint
を渡すと、まだ壊れています。
リストはありませんが、私のオブジェクトはどのようにサービスに行く途中で食べられるのですか?
ええ、彼らはすでに動作する他の方法で使用されています。 'OutageGroupSafe'を単に' int'に変更したとしても、それはまだ機能しません(0になります)。 –