スレッドに問題があります。コードは次のとおりです。
class myThread
{
public int _start, _finish;
string[] new_array = new string[10];
public static string[] existed_array = new string[20];
public myThread(string name, int start, int finish)
{
_start = start;
_finish = finish;
Thread thread = new Thread(this.Get);
thread.Name = name;
thread.Start();//передача параметра в поток
}
void Get()
{
for (int ii = _start; ii < _finish; ii++)
{
// i put data in existed array in Main()
// new array is just an array where i want to put existed data
new_array[ii] = existed_array[ii];
// but in output new_array[0]=null; new_array[1]=value
}
}
}
void Main ()
{
// For example
myThread.existed_array = {1, 2 , 3, ...}
myThread t1 = new myThread("Thread 1", 0, 1);
myThread t2 = new myThread("Thread 2", 1, 2);
}
スレッドは異なるパラメーターを使用してGet()を実行しますが、出力には2番目のスレッドのパラメーターのみが含まれます。ステップバイステップのプログラムからわかるように、Get関数のすべての行が2回実行されるので、これがポイントです。どうすればこの問題を解決できますか?