2011-07-29 22 views
0

私はwcfサービスに何千ものアイテムを削除するこのクライアントアプリケーションを持っています。データはバルクで送信されるので、操作をキャンセルしても(進行状況バーで)、すべての項目が削除されます。私が望む動作は、サービス内の削除操作を取り消し、削除されていない項目を取り出せるようにすることです。ありがとうございました。WCFサービスに通知すると、現在実行中の操作をキャンセルし、残りのデータを返します。

+1

はまだサービスについて考えてはいけない - あなたは、データベースまたは任意の永続ストアでこれを行うだろうか?削除を一切キャンセルする方法はありますか? –

+0

アイテムはデータベースで1つずつ削除されます。操作を中断して削除されていないアイテムを返すものが必要です。私はあなたの質問に正しく答えることを願っています。ありがとう。 –

+0

本当に必要以上に複雑に聞こえる、本当に。 –

答えて

0

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

あなたがしたいことは、InstanceContextModeシングルトンまたはセッションでは動作しますが、PerCallでは動作しません。

一括操作で削除を開始するメソッドがOneWayであるとします。

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

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

削除されなかったレコードを返すのはちょっと難しいです。削除するレコードのリストは、サービスクラスのmemebrである必要もあります。そのため、削除を停止するメソッドはリストにもアクセスできます。 db shoulkdから削除するメソッドは、リストからレコードを1つずつ削除して、残りのアイテムを追跡することもできます。

すぐに2番目の方法でリストに戻ることはできますが、正確な結果は保証されません。私がやることは、戻ってくる前に200ミリ秒待ちます。そうすれば、リストから削除された項目が実際にdb内で削除されることがわかります。これは明らかである

希望...

+0

はい、InstanceContextModeはPerSessionであり、削除操作はOneWayです。私はあなたのポイントを得る、私はしようとし、何が起こるかを見てみましょう。残りの未削除アイテムに関しては、私はそれらを元に戻す必要はないかもしれません。クライアント側のアイテムを更新する別の操作を実行しようとします。ありがとう。 –

関連する問題