是一个思路。谢谢!我现在用多线程处理!还考虑 使用 线程池(具体不熟悉,望7楼给个实例)我当前: int coun = ds_SCENE.Tables[0].Rows.Count; Thread[] fThreadArray = new Thread[coun]; for (int i = 0; i < coun; i++) fThreadArray[i] = new Thread(new ThreadStart(DoSomeThings())); for (int i = 0; i < coun; i++) fThreadArray[i].Start();public void DoSomeThings() { //还没测试 }
MyData de = new MyData(); private void Form1_Load(object sender, EventArgs e) { int[,] data = new int[,] { { 100, 1 }, { 200, 1 }, { 500, 0 }, { 1000, 1 } }; for (int i = 0; i < 4; i++) { MyData de = new MyData(); de.waittime = data[i, 0]; de.value = data[i, 1]; ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), de); } } private void JanitorMethod(object ob) { this.de = (MyData)ob; Thread.Sleep(de.waittime); Console.WriteLine("等待" + de.waittime + "后, 取值:" + de.value); } struct MyData { public int waittime; public int value; }
在线等!谢谢Thread.Sleep 写在 遍历里面,
执行完毕时间 将是:1800
int[][] a = new int[][2];
int[] b = new int[2];function a
{
while(true)
{
lock(a)
{
随机取一个赋给b
从a中删除b
}
延时 b[0] 秒
执行操作
}
}开N个执行a方法的线程
for循环一下,
判断一下,是否最后一个,不是
取一个值,new一个timer延时a[N][0]毫秒, 然后取a[N][1],操作
不是
取一个值,new一个timer延时a[N][0]毫秒减去程序已执行的毫秒, 然后取a[N][1],操作
结束
是一个思路。谢谢!我现在用多线程处理!还考虑 使用 线程池(具体不熟悉,望7楼给个实例)我当前:
int coun = ds_SCENE.Tables[0].Rows.Count;
Thread[] fThreadArray = new Thread[coun];
for (int i = 0; i < coun; i++)
fThreadArray[i] = new Thread(new ThreadStart(DoSomeThings()));
for (int i = 0; i < coun; i++)
fThreadArray[i].Start();public void DoSomeThings()
{
//还没测试
}
private void Form1_Load(object sender, EventArgs e)
{
int[,] data = new int[,] { { 100, 1 }, { 200, 1 }, { 500, 0 }, { 1000, 1 } }; for (int i = 0; i < 4; i++)
{
MyData de = new MyData();
de.waittime = data[i, 0];
de.value = data[i, 1];
ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), de);
}
} private void JanitorMethod(object ob)
{
this.de = (MyData)ob;
Thread.Sleep(de.waittime);
Console.WriteLine("等待" + de.waittime + "后, 取值:" + de.value);
} struct MyData
{
public int waittime;
public int value;
}