关于多线程处理的问题,请大家帮忙看一下,急!!谢谢
我想将某个目录下的所有文件做一个转换操作,单线程的操作部分代码如下:
while(true)
{
files=System.IO.Directory.GetFileSystemEntries(@ " "+sourcepath);
foreach(string path in files)
{
if(File.Exists(path))
{
//////处理文件开始 改成用两个线程来同时处理,应该怎么做?????
convertVideo(path);
//////处理文件结束
}
}
Thread.Sleep(1);
}//while
public static void convertVideo(string path)
{
//这部分代码已写好了
}
现在我想把处理文件那部分改成多线程的,同时处理两个文件,不知道这部分代码怎么改?请大家帮我一下,谢谢!
------解决方案--------------------全部的.我这里可以通过编译
using System;
using System.IO;
using System.Collections.Generic;
using System.Threading;
class Programe
{
static void Main()
{
string sourcepath = " ";
while (true)
{
string[] files = System.IO.Directory.GetFileSystemEntries(@ " " + sourcepath);
List <string> fileList = new List <string> (files);
Thread th1 = new Thread(WorkRoutine);
Thread th2 = new Thread(WorkRoutine);
th1.Start(fileList);
th2.Start(fileList);
th1.Join();
th2.Join();
}
}
private static void WorkRoutine(object obj)
{
List <string> li = (List <string> )obj;
string path = null;
while (true)
{
lock (li)
{
if (li.Count == 0)
{
return;
}
path = li[0];
li.RemoveAt(0);
}
//convertVideo(path);
}
}
}