1

私はプログラミングに非常に慣れていないので、助けていただければ幸いです。私の課題は、指定されたintでtxtファイルを読み取る3つの異なるスレッドを作成することです。次に、これらの値の合計を出力する必要があります。作成した 3 つのスレッドから int にアクセスしたい。これどうやってするの?

これは私のコードの一部です:

class Program
{
    static void Main()
    {

        Thread t1 = new Thread(ReadFile1);
        Thread t2 = new Thread(ReadFile2);
        Thread t3 = new Thread(ReadFile3);
        t1.Start();
        t2.Start();
        t3.Start();

        System.Console.WriteLine("Sum: ");
        Console.WriteLine();                                                                                        

        Console.WriteLine("");
        System.Console.ReadKey();                                                                                                 

    }

    public static void ReadFile1()
    {

        System.IO.StreamReader file1 = new System.IO.StreamReader({FILEDESTINATION});        
        int x = int.Parse(file1.ReadLine());

    }
4

6 に答える 6

2

.NET のタスク システムにより、これが非常に簡単になります。ほとんどの場合、生のスレッドよりも優先する必要があります。あなたの例では:

var t1 = Task.Run(() => ReadFile(path1));
var t2 = Task.Run(() => ReadFile(path2));
var t3 = Task.Run(() => ReadFile(path3));

Console.WriteLine("Sum: {0}", t1.Result + t2.Result + t3.Result);

static int ReadFile(string path) {
    using(var file = new StreamReader(path))      
        return int.Parse(file.ReadLine());
}
于 2013-10-27T22:40:46.090 に答える
0

これのようなものかもしれません:

public static void ReadFile1(ref int? x)
{
    System.IO.StreamReader file1 = new System.IO.StreamReader( {FILEDESTINATION});
    x = int.Parse(file1.ReadLine());
}

そしてそれを呼び出す

int? res1 = null;
Thread t1 = new Thread(()=>ReadFile1(ref res1));
//...
t1.Start();
t1.Join();

System.Console.WriteLine("Sum: " + res1);
于 2013-10-27T20:55:40.073 に答える