using System;
using System.Windows;
using System.Threading;
using System.Collections;
/// <summary>
/// 加载一个 IEnumerable 数据
/// </summary>
public class LoadIEnumerableByThread
{
/// <summary>
/// 單例
/// </summary>
private static readonly LoadIEnumerableByThread instance = new LoadIEnumerableByThread();
/// <summary>
/// 單例 訪問屬性
/// </summary>
public static LoadIEnumerableByThread Instance
{
get { return LoadIEnumerableByThread.instance; }
}
/// <summary>
/// 不能實例化
/// </summary>
protected LoadIEnumerableByThread() { }
/// <summary>
/// 加载一个数据集合将数据 以指定的时间间隔加载单条数据到集合
/// </summary>
/// <param name="collection">要添加数据的集合 UI显示的数据源集合</param>
/// <param name="Result">服务器返回集合的结果</param>
/// <param name="millisecondsTimeout">线程间隔的时间 毫秒</param>
/// <param name="OperationUi">操作的UI原素 用于改变界面数据</param>
public void LoadByThread(IList collection, IEnumerable Result,int millisecondsTimeout, UIElement OperationUi)
{
ThreadPool.QueueUserWorkItem(new WaitCallback((n) => {
foreach (var p in Result)
{
Thread.Sleep(millisecondsTimeout);
OperationUi.Dispatcher.BeginInvoke(new Action(() =>
{
///添加到集合
collection.Add(p);
}));
}
}));
}
/// <summary>
/// 加载一个数据集合将数据 以指定的时间间隔加载单条数据到集合
/// 线程间隔的时间 毫秒 默认20
/// </summary>
/// <param name="collection">要添加数据的集合 UI显示的数据源集合</param>
/// <param name="Result">服务器返回集合的结果</param>
/// <param name="OperationUi">操作的UI原素 用于改变界面数据</param>
public void LoadByThread(IList collection, IEnumerable Result, UIElement OperationUi)
{
LoadByThread(collection, Result, 20, OperationUi);
}
}