我想达到以下要求; 请提出一些解决方案.
string[] filenames = Directory.GetFiles("C:\Temp"); //10 files
for (int i = 0; i < filenames.count; i++)
{
ProcessFile(filenames[i]); //it takes time to execute
}
Run Code Online (Sandbox Code Playgroud)
我想实现多线程.例如,有10个文件.我想一次处理3个文件(比如可配置maxthreadcount).所以3个文件将在for循环的3个线程中处理,如果有任何线程完成执行,它应该从for循环中选择下一个项目.还希望确保在退出for循环之前处理所有文件.
请建议最好的方法.
我们可以将IDisposable定义为抽象类而不是接口,如下所示.有什么缺点?
public abstract class absDisposable
{
public abstract void Dispose();
}
public class childClass : absDisposable
{
SqlConnection objConnect = new SqlConnection("connstring");
public override void Dispose()
{
if (this.objConnect != null)
{
this.objConnect.Dispose();
this.objConnect = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在相同的接口工作中编写了该代码,否则没有没有实现的抽象类的原因.这与我们定义Interface的方式相同,没有任何implementation.right?但是,问题不仅仅是IDisposable,而是我们使用的所有接口.为什么我们不简单地编写我们需要的方法,为什么我们为实现接口更多一层呢?因为Interface没有用处.我们总是必须在派生类中提供我们自己的实现,因此也不存在代码重用性的问题.如果我们不能重用代码,接口如何解决c#中缺少多重继承?我想知道的是接口证明它存在的情况是什么?