Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //MainWindow.xaml.cs
- private ObservableCollection<FDProcessTab> FDProcessTabs { get; set; }
- public string FDServicePath { get; set; }
- public MainWindow()
- {
- InitializeComponent();
- FDProcessTabs = new ObservableCollection<FDProcessTab>();
- uow = new FaceDetect.DAL.Dapper.UnitOfWork("data source=192.168.12.12,1433;initial catalog=FaceDetectCloud;persist security info=True;user id=sa;password=a9brLBEV;MultipleActiveResultSets=True;App=FDAdmin");
- dahuyaManagementUnits = uow.ManagementUnits.GetAllUnits().ToList();
- foreach(var d in dahuyaManagementUnits)
- AvailableDevicesList.Items.Add(d);
- FDServicePath = @"C:\Projects\FaceDetect\FaceDetect\bin\Release\SCA\FaceDetect.exe";
- }
- private void StartButton_Click(object sender, RoutedEventArgs e)
- {
- if(AvailableDevicesList.SelectedItem!=null && AvailableDevicesList.SelectedItem is DahuyaManagementUnit)
- {
- var a = AvailableDevicesList.SelectedItem;
- AvailableDevicesList.SelectedItem = null;
- AvailableDevicesList.Items.Remove(a);
- WorkingDevicesList.Items.Add(a);
- FDProcessTabs.Add(new FDProcessTab(FDServicePath,new List<DahuyaManagementUnit>() { (DahuyaManagementUnit)a }, this));
- NotifyPropertyChanged("FDProcessTabs");
- }
- //MainWindow.xaml
- <TabControl x:Name="FDServiceTabs" ItemsSource="{Binding ElementName=_this, Path=FDProcessTabs}">
- <TabControl.ItemTemplate>
- <DataTemplate>
- <TextBlock Text="{Binding Path=Header}"/>
- </DataTemplate>
- </TabControl.ItemTemplate>
- <TabControl.ContentTemplate>
- <DataTemplate>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="6*"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <TextBox x:Name="ConsoleOutput" Grid.Column="0" Background="Fuchsia" VerticalScrollBarVisibility="Visible" Text="{Binding Path=Text}"></TextBox>
- </Grid>
- </DataTemplate>
- </TabControl.ContentTemplate>
- </TabControl>
- //FDProcessTab.cs
- const int BUFFER_SIZE = 100;
- private Process process;
- private List<DahuyaManagementUnit> units;
- LinkedList<string> text;
- public event PropertyChangedEventHandler PropertyChanged;
- private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
- {
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- public List<DahuyaManagementUnit> Units { get => units; }
- public string Header { get => units.Select(x => x.HardwareID).Aggregate((i, j) => (i + " " + j)); }
- public string Text { get => text.Aggregate((i, j) => (i + Environment.NewLine + j)); }
- public FDProcessTab(string path, List<DahuyaManagementUnit> _units, MainWindow mainWindow)
- {
- units = _units;
- text = new LinkedList<string>();
- process = new Process();
- process.StartInfo.FileName = path;
- process.StartInfo.Arguments = units.Select(x => x.HardwareID).Aggregate((i,j)=>(i + " "+ j));
- process.EnableRaisingEvents = true;
- process.StartInfo.UseShellExecute = false;
- process.StartInfo.RedirectStandardOutput = true;
- ProcessManager.Processes.Add(process);
- //process.StartInfo.CreateNoWindow = true;
- process.OutputDataReceived += (sender, a) => {
- text.AddLast(a.Data);
- if (text.Count > BUFFER_SIZE) text.RemoveFirst();
- NotifyPropertyChanged("Text");
- };
- process.Exited += (sender, a) =>
- {
- };
- process.Start();
- process.BeginOutputReadLine();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement