public void Evaluate(int SpreadMax) { if (FInDevice.IsChanged || FInFramerate.IsChanged || FInChannel.IsChanged || FInChannels.IsChanged) { foreach (var instance in FInstances) { if (instance != null) { instance.Dispose(); } } FInstances.SliceCount = 0; FOutStatus.SliceCount = SpreadMax; FOutTimecode.SliceCount = SpreadMax; for (int i = 0; i < SpreadMax; i++) { try { var instance = new DecodeInstance(FInDevice[i], FInChannels[i], FInChannel[i], FInFramerate[i]); FInstances.Add(instance); FOutStatus[i] = "OK"; } catch (Exception e) { FInstances.Add(null); FOutStatus[i] = e.Message; } } } for (int i = 0; i < FInstances.SliceCount; i++) { if (FInstances[i] != null) { try { FOutTimecode[i] = FInstances[i].Timecode; } catch { } } else { FOutTimecode[i] = null; } } }