Ejemplo n.º 1
0
        public MainWindow()
        {
            InitializeComponent();
            reader = null;
            writer = null;
            buffer = null;
            inputFile = null;
            outputFile = null;
            bufferSize = -1;
            labelProgress.Visibility = progressReading.Visibility = Visibility.Hidden;

            timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(500);
            timer.Tick += Timer_Tick;
            progressBuferSize.Minimum = 0;
        }
Ejemplo n.º 2
0
        private void buttonReaderStart_Click(object sender, RoutedEventArgs e)
        {
            if (bufferSize == -1)
            {
                MessageBox.Show("Не задан максимальный размер буфера!");
                return;
            }
            if (inputFile == null)
            {
                MessageBox.Show("Не задан входной файл");
                return;
            }
            if (buffer == null)
                buffer = new Classes.ConcurrentNonSizebleQueue<short>(bufferSize);

            if (reader == null)
            {
                try {
                    reader = new Classes.ReaderThread(inputFile, ref buffer);
                    reader.OnReadingFinished += Reader_OnReadingFinished;
                    reader.OnPercentageUpped += Reader_OnReadingStateChanged;
                } catch(Exception)
                {
                    reader = null;
                    MessageBox.Show("Ошибка при открытии исходного файла");
                }
            }

            buttonOpenFile.IsEnabled = false;
            if (timer.IsEnabled == false)
                timer.IsEnabled = true;
            labelProgress.Visibility = progressReading.Visibility = Visibility.Visible;

            readerButtons(false, true, true);

            reader.Read();
        }
Ejemplo n.º 3
0
        private void buttonWriterStart_Click(object sender, RoutedEventArgs e)
        {
            if (bufferSize == -1)
            {
                MessageBox.Show("Не задан максимальный размер буфера!");
                return;
            }
            if (outputFile == null)
            {
                MessageBox.Show("Не задан выходной файл");
                return;
            }
            if (buffer == null)
                buffer = new Classes.ConcurrentNonSizebleQueue<short>(bufferSize);
            if (writer == null)
            {
                try {
                    writer = new Classes.WriterThread(outputFile, ref buffer);
                    writer.OnWritingFinished += Writer_OnWritingFinished;
                }
                catch (Exception)
                {
                    reader = null;
                    MessageBox.Show("Ошибка при открытии файла для сохраниения");
                }
            }

            buttonSaveFile.IsEnabled = false;

            if (timer.IsEnabled == false)
                timer.IsEnabled = true;

            buttonWriterStart.IsEnabled = false;
            buttonWriterStop.IsEnabled = true;
            buttonWriterPause.IsEnabled = true;

            writer.Write();
        }
Ejemplo n.º 4
0
        private void Writer_OnWritingFinished(object sender, EventArgs e)
        {
            Dispatcher.BeginInvoke((Action)(delegate
            {
                MessageBox.Show("Запись закончена");
                buttonOpenFile.IsEnabled = true;
                buttonSaveFile.IsEnabled = true;

                writerButtons(true, false, false);

                reader.Stop();
                readerButtons(true, false, false);
                reader = null;

                writer.Stop();
                writerButtons(true, false, false);
                writer = null;

                labelProgress.Visibility = progressReading.Visibility = Visibility.Hidden;
                buttonOpenFile.IsEnabled = true;
                buttonSaveFile.IsEnabled = true;

                inputFile = null;
                outputFile = null;
                buttonOpenFile.IsChecked = false;
                buttonSaveFile.IsChecked = false;

                textBlockInputFileName.Content = "";
                textBlockOutputFileName.Content = "";

                progressReading.Value = 0;

                timer.IsEnabled = false;
                progressBuferSize.Value = 0;
                labelBufferSizeChangeable.Content = "";
            }));
        }
Ejemplo n.º 5
0
        private void buttonStop_Click(object sender, RoutedEventArgs e)
        {
            reader.Stop();
            readerButtons(true, false, false);
            reader = null;

            writer.Stop();
            writerButtons(true, false, false);
            writer = null;

            labelProgress.Visibility = progressReading.Visibility = Visibility.Hidden;
            buttonOpenFile.IsEnabled = true;
            buttonSaveFile.IsEnabled = true;

            inputFile = null;
            outputFile = null;
            buttonOpenFile.IsChecked = false;
            buttonSaveFile.IsChecked = false;

            textBlockInputFileName.Content = "";
            textBlockOutputFileName.Content = "";

            progressReading.Value = 0;

            timer.IsEnabled = false;
            progressBuferSize.Value = 0;
            labelBufferSizeChangeable.Content = "";
        }