0

削除するために何千ものアイテムをwcfサービスに送信するこのクライアントアプリケーションがあります。データがまとめて送信されるため、(プログレスバーで)操作をキャンセルしても、すべての項目が削除されます。私が望む動作は、サービスの削除操作をキャンセルして、削除されていないアイテムを取得できるようにすることです。ありがとうございました。

4

1 に答える 1

0

どのInstanceContextModeを使用していますか?

やりたいことは、InstanceContextMode SingletonまたはSessionで機能しますが、PerCallでは機能しません。

一括削除操作を開始するメソッドはOneWayだと思います。

サービスにboolフィールド(最初はfalse)を作成します。レコードを1つずつ削除するループは、そのフラグをチェックし、フラグがtrueの場合は停止します。

そのフィールドをtrueに設定する別のメソッドをサービスに作成します。「削除のキャンセル」ボタンを押したときに、Webサイトから新しいメソッドを呼び出します。レコードを削除するためのループは壊れます。

削除されなかったレコードを返すのは少し注意が必要です。削除するレコードのリストもサービスクラスのメンバーである必要があります。これにより、削除を停止するメソッドもリストにアクセスできるようになります。db shoulkdから削除するメソッドは、残りのアイテムを追跡できるように、リストからレコードを1つずつ削除します。

2番目の方法でリストをすぐに返すことができますが、thiaは正確な結果を保証するものではありません。私がすることは戻る前に200msの待機をすることです。そうすれば、リストから削除されたアイテムがデータベースで実際に削除されていることがわかります。

これが明確であることを願っています...

于 2011-07-29T07:51:30.177 に答える