小编SAM*_*SAM的帖子

如何在For循环中使用多线程

我想达到以下要求; 请提出一些解决方案.

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循环之前处理所有文件.

请建议最好的方法.

.net c# multithreading .net-2.0

6
推荐指数
2
解决办法
3万
查看次数

为什么IDisposable是一个接口,而不是抽象类?

我们可以将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#中缺少多重继承?我想知道的是接口证明它存在的情况是什么?

c#

-3
推荐指数
1
解决办法
324
查看次数

标签 统计

c# ×2

.net ×1

.net-2.0 ×1

multithreading ×1