0

リスト オブジェクト (C#.NET の ICollection インターフェイスを実装する任意のクラス) が特定の容量 (リスト内の項目数) に達したときに起動するコールバック関数を作成する方法はありますか?

たとえば、リスト オブジェクトに 5 つの要素がある場合にイベントを発生させたいと考えています。

状況に合わせて説明すると、ネットワーク経由で HTTP を利用するサービスを実行しており、アプリケーションのパフォーマンスにはバッチ処理が必要であるため、データ処理をバッチ処理しています。

簡単な実装は、メモリ内(リスト内)でバッチ処理を行い、ある程度の容量に達したときに起動し、ネットワーク経由で送信するか、他のツールがある場合はそれらへのポインタをいただければ幸いです。

ありがとう

4

2 に答える 2

2

すでに存在するすべてのクラスにイベントを追加する方法はありませんが、どちらかまたは代わりにICollection使用できます。どちらもリストが変更されたときにイベントを発生させるので、変更されたイベントのアイテム数を確認するだけで済みます。または、内部オブジェクトのメソッドをラップするだけで実装する独自のクラスを作成し、メソッドに特別なコードを追加してカウントを確認することもできます。ObservableCollectionBindingListICollectionListAdd

于 2012-06-29T21:19:04.813 に答える
1

イベントを実装できます。

public class YourClassName
{
    private List<Type> m_InnerList = new List<Type>();

    public event EventHandler OnBatch;

    public void Add(Type object)
    {
        m_InnerList.Add(object);
        if ((m_InnerList.Count % YourCountHere == 0) && OnBatch != null)
           OnBatch(this, new EventArgs());

    }

}

名前を変更し、タイプを選択し(またはクラスをジェネリックにする)、より多くのロジックを実装する必要があります(アイテムへのアクセスなど)-コンストラクターでバッチ量を取得するように変更できます

代わりにリストから派生できます

于 2012-06-29T21:16:30.817 に答える