나는 MS 차트 컨트롤이 있습니다. 별도의 스레드를 만들어 포인트를 채우고 각 포인트를 플로팅 한 다음 스레드를 잠자기 상태로 둔 다음 다음 포인트를 플롯하여 그래프가 움직이는 것처럼 보이게 만듭니다. 다음은 코드입니다.이벤트가 생성 될 때 작업 일시 중지
Task[] t = new Task[1];
t[0] = Task.Factory.StartNew(() => plotChartPoints());
public void plotPoint(int x, double y, int series)
{
comparisonChart.Series[series].Points.AddXY(x, y);
}
public void refreshChart()
{
this.mainSplitContainer.Panel2.Refresh();
}
public void plotChartPoints()
{
//comparisonChart.Series[0].Points.DataBindXY(xValuesSeries1.ToArray(), yValuesSeries1.ToArray());
//comparisonChart.Series[1].Points.DataBindXY(xValuesSeries2.ToArray(), yValuesSeries2.ToArray());
for (int index = 0; index < xValuesSeries1.Count; index++)
{
if (comparisonChart.InvokeRequired)
{
comparisonChart.Invoke(new MethodInvoker(() => plotPoint(xValuesSeries1.ElementAt(index), yValuesSeries1.ElementAt(index), 0)));
comparisonChart.Invoke(new MethodInvoker(() => plotPoint(xValuesSeries2.ElementAt(index), yValuesSeries2.ElementAt(index), 1)));
}
Thread.Sleep(50);
if (this.mainSplitContainer.InvokeRequired)
{
mainSplitContainer.Invoke(new MethodInvoker(()=> refreshChart()));
}
}
}
지금, 나는 버튼을 추가 할 버튼이 차트 일시 정지 및 차트 정지를 채우고 작업을 클릭하면되도록. 어떻게해야합니까? .NET 4.0을 사용 중이며 Task
클래스의 작업을 일시 중지 할 수있는 방법이 없습니다.
작은 쿼리. '채울 수있는 별도의 스레드를 만듭니다'라고 말하면서, 새로운'Task'가 항상 새로운 스레드를 생성 할 수 있다고는 확신 할 수 없습니다. – MattC
VS2012 + 및 ['Microsoft.Bcl.Async'] (http://www.nuget.org/packages/microsoft.bcl.async)를 사용할 수 있습니까? – Noseratio