c#다중 스레드 소스 3
이 프로그램의 사고방식은 하나의 일을 공동으로 하는 것이다. (하나의 Array List에서 요소를 삭제하는 것) 실행이 완료되면 두 라인이 모두 실행을 멈추는 것이다.설명: 라인 동기화를 실현하는 것은 이 방식이 아니다.여기에 이벤트를 사용했습니다. 이벤트 처리 프로그램에서 라인을 중단했습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Threading;
namespace ConsoleApplication1
{
class ThreadDemo
{
private Thread threadOne;
private Thread threadTwo;
private ArrayList stringList;
private event EventHandler OnNumberClear;//
//public static void Main()
//{
// ThreadDemo demo = new ThreadDemo(1000);
// demo.Action();
//}
public ThreadDemo(int number)
{
Random random = new Random(1000000);
stringList = new ArrayList(number);
for (int i = 0; i < number; i++)
{
stringList.Add(random.Next().ToString());
}
threadOne = new Thread(new ThreadStart(Run));//
threadTwo = new Thread(new ThreadStart(Run));//
threadOne.Name = " 1";
threadTwo.Name = " 2";
OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear);
}
///
///
///
public void Action()
{
threadOne.Start();
threadTwo.Start();
}
///
///
///
private void Run()
{
string stringValue = null;
while (true)
{
Monitor.Enter(this);// ,
stringValue = (string)stringList[0];
Console.WriteLine(Thread.CurrentThread.Name + " " + stringValue);
stringList.RemoveAt(0);// ArrayList
if (stringList.Count == 0)
{
OnNumberClear(this, new EventArgs());//
}
Monitor.Exit(this);//
Thread.Sleep(5);
}
}
// ,
void ThreadDemo_OnNumberClear(object sender, EventArgs e)
{
Console.WriteLine(" , 。");
threadTwo.Abort();
threadOne.Abort();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.