Exemplo n.º 1
0
        private static void ProgressRequested(BlockingCollection <byte[]> messagesToSend)
        {
            var root = CurrentRun?.MST;

            if (root != null)
            {
                WriteMessageToStream(messagesToSend, (writer) =>
                {
                    try
                    {
                        var progress = root.Progress;
                        // make sure there is no error gathering the progress
                        writer.Write((Int32)ToHost.ClientReportedProgress);
                        writer.Write(progress);
                        var reports = Configuration.ProgressReports;
                        if (reports != null)
                        {
                            lock (((ICollection)reports).SyncRoot)
                            {
                                var length = reports.Count;
                                writer.Write(length);
                                int i = 0;
                                for (; i < length; ++i)
                                {
                                    IProgressReport report = reports[i];
                                    writer.Write(report.Name);
                                    writer.Write(report.GetProgress());
                                    writer.Write(report.Colour.Item1);
                                    writer.Write(report.Colour.Item2);
                                    writer.Write(report.Colour.Item3);
                                }
                            }
                        }
                        else
                        {
                            writer.Write(0);
                        }
                    }
                    catch
                    {
                    }
                });
            }
        }