2017-01-25 1 views
-1

나는이 머리카락으로 머리카락을 찢어 내고 있으며 이미 하루 이상을 낭비했습니다. 나는 그것이 어리석은 무엇인가라고 확신한다. 그리고 나는 단지 충분한 경험을 가지지 않고있다. 그래서 어떤 도움이라도 많이 평가된다!BeginInvoke에 대한 대리인으로 C# 목록

여기 거래가 있습니다 ... 새 데이터로 새로 고쳐야하는 National Instruments Graph 개체 목록이 있습니다. 이것이 의미가 있습니까? 그것은 아래의 코드로 작동하지만 분명히 한 그래프에 대해서만 작동합니다. 질문은 하나의 그래프 대신 그래프 목록을 전달한 다음 그래프를 통해 데이터를 할당하는 방법입니다. 미리 감사드립니다. 나는 그래서 여기 completly 질문을 이해 확실하지 오전

private void GetAndPlotData(Action<object> actionPlotData) 
    { 
     for (int ok = 0; ok < 10000000; ok++) 
     { 
      // Get some data here for every graph 
      double[][] testData = new double[2][]; 
      testData[0] = new double[] { 1, 2, 3, 4 }; 
      testData[1] = new double[] { 2, 4, 6, 8 }; 

      // Plot it 
      // QUESTION - how to reference passed List of Graphs in the loop to assign data? 
      Dispatcher.BeginInvoke(actionPlotData, new object[] { testData }); 

      Thread.Sleep(10); 
     } 
    } 

    private async void StartTest() 
    { 
     // QUESTION - how to pass List Of Graphs as an Action to loop through them later on? 
     await Task.Run(() => GetAndPlotData(data => Graphs[0].DataSource = data)); 
    } 
+1

귀하의 질문은 ...? – Gusman

+0

아니요,이 질문은 현재 실제로 의미가 없습니다. "그래프의 통과 목록"은 없습니다. 객체의 사용은 최소한이지만 명확한 예제보다 덜 도움이됩니다 ... –

+0

Ok "객체"대신에 가지고있는 코드로 업데이트 할 것입니다. 누군가를 컴파일하려고 할 때를 대비해 객체를 사용했습니다. 코드에 질문을 추가하고 설명을 업데이트했습니다. 고맙습니다. – SYB

답변

0

는이 동적 목록 :

private void GetAndPlotData(List<Action<object>> actionPlotData) 
{ 
    for (int ok = 0; ok < 10000000; ok++) 
    { 
     // Get some data 
     double[][] testData = new double[2][]; 
     testData[0] = new double[] { 1, 2, 3, 4 }; 
     testData[1] = new double[] { 2, 4, 6, 8 }; 

     // Plot it 
     // QUESTION - how to reference passed List of Graphs in the loop? 
     for (int i = 0; i < actionPlotData.Count; i++) 
     { 
      Dispatcher.BeginInvoke(actionPlotData[i], new object[] { testData[i] }); 
     } 

     Thread.Sleep(10); 
    } 
} 

private async void StartTest() 
{ 
    // QUESTION - how to pass List Of Graphs as an Action to loop through them later on? 
    await Task.Run(() => GetAndPlotData(new List<Action<object>> { 
     data => Graphs[0].DataSource = data, 
     data2 => Graphs[1].DataSource = data2 
     }); 
} 

업데이트 된 버전을 찾고있는 것이 아니다 방법을 설명 할 수 있도록 먼저 제안입니다

var actions = Graphs.Select(g => (Action<object>)(data => g.DataSource = data)).ToList(); 

    // QUESTION - how to pass List Of Graphs as an Action to loop through them later on? 
    await Task.Run(() => GetAndPlotData(actions)); 
+0

두 그래프 모두에 음모가 있습니다. 그래서 시작입니다! 기본적으로 올바르게 이해합니다. 8 개 이상의 그래프가 있다고 가정 해 봅시다. 말 그대로 한 번에 한 줄씩 수동으로 작성해야합니까 (통과 할 때)? 아니면 하나의 매개 변수로 할 수있는 방법이 있습니까? – SYB

+0

시작 테스트의 컬렉션을 동적으로 코딩하지 않고 하드 코딩하지 않으시겠습니까? –

+0

예. 내 프로젝트의 여러 장소에 적용 할 수 있기 때문에이 작업을 수행하는 방법을 알고 싶습니다. 감사! – SYB

관련 문제