Ich habe nun folgendes programmier:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (waveformDataSource.HasRawData()) { int[] data = waveformDataSource.GetRawData(blk, startSample + offset, doNow); Thread.Sleep(100000);
if (red.ReductionInfo.Type == DataReductionType.None || red.ReductionInfo.Factor == 1) { block.AppendRawData(data, 0, doNow); } else { List<int> reduced = red.Reduce(data); block.AppendRawData(reduced.ToArray(), 0, reduced.Count); } } |
Nach dem die Daten via waveformDataSource.GetRawData() bezogen wurden (Es wird jeweils 1MB Daten Pro schleifendurchgang bezogen), pausiere ich den
BackgroundWorker für 100 Sekunden. Das Gui ist in dieser Zeit ohne Probleme zu bedienen. Also muss es irgendeinen Grund geben, warum der Aufruf
waveformDataSource.GetRawData() den GUI Thread so starch blockiert. Ich habe den BackgroundWorker schon an anderen Orten erfolgreich implementiert ohne
dass ich das GUI blockiert habe.