Вывести строки в файл - C#

Узнай цену своей работы

Формулировка задачи:

не могу в методе refreshDeadProcessInfo() вывести строки в txt
using System;
 
using System.Collections.Generic;
 
using System.ComponentModel;
 
using System.Data;
 
using System.Diagnostics;
 
using System.Drawing;
 
using System.IO;
 
using System.Linq;
 
using System.Text;
 
using System.Threading.Tasks;
 
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public List<Processes> procList = new List<Processes>();
        private Process[] processList = Process.GetProcesses();
        public int count = 0;
        public Form1()
        {
            InitializeComponent();
            List<Processes> procList = new List<Processes>();
 
            dataGridView1.AutoGenerateColumns = true;
 
            bindingSource1.DataSource = this.procList;
 
            Timer tmr = new Timer();
 
            tmr.Interval = 500;
 
            tmr.Tick += new EventHandler(tmr_Tick);
 
            tmr.Start();
        }
       
        private void tmr_Tick(object sender, EventArgs e)
        {
 
            try
            {
 
                this.procList.Clear();
 
                foreach (var winProc in Process.GetProcesses())
                {
 
                    string min_threads = "";
 
                    string totalProcessorTime = "";
 
                    try
                    {
 
                        min_threads = winProc.Threads.OfType<ProcessThread>().Where(t => t.ThreadState == ThreadState.Running).Count().ToString();
 
                        totalProcessorTime = winProc.TotalProcessorTime.ToString();
 
                    }
                    catch (Exception er)
                    {
 
                    }
 
                    this.procList.Add(new Processes(winProc.Id.ToString(), winProc.ProcessName, winProc.PeakVirtualMemorySize64.ToString(), winProc.WorkingSet64.ToString(), totalProcessorTime));
 
                }
 
                dataGridView1.DataSource = this.procList;
 
                dataGridView1.Refresh();
                refreshDeadProcessInfo();
            }
            catch (DataException er)
            {
 
                MessageBox.Show(er.Message, "Ошибка обновления данных.");
 
            }
 
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string data = "";
 
            int row = Convert.ToInt32(dataGridView1.CurrentCell.RowIndex);
 
            int pid = Convert.ToInt32(dataGridView1[0, row].Value);
 
            Process process = Process.GetProcessById(pid);
 
            string process_name = process.ProcessName;
 
            foreach (ProcessThread thread in process.Threads)
            {
 
                data += "ID: " + thread.Id + ", Состояние: " + thread.ThreadState + "\n";
 
            }
 
            MessageBox.Show(data, "Информация о процессе " + process_name);
        }
        private void bindingSource1_CurrentChanged(object sender, EventArgs e)
        {
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            saveFileDialog1.DefaultExt = "txt";
            if(saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string filename = saveFileDialog1.FileName;
                StreamWriter sw = new StreamWriter(filename);
                string start_time ="Нет доступа к информации о процессе";
                foreach (var winProc in Process.GetProcesses())
                {
 
                    try
                    {
 
                        start_time = winProc.StartTime.ToString();
 
                    }
                    catch (Exception er)
                    {
 
                    }
 
                    sw.WriteLine(winProc.Id +  "Имя:" + winProc.ProcessName + ", Время старта:" + start_time);
 
                }
 
                sw.Close();
 
            }
 
}
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
 
        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { }

        private void refreshDeadProcessInfo() //Метод обновляет информацию о мертвых процессах
        {
            string path = @"c:\Users\Мрр\Documents\MyTest.txt";
            
            Process[] newProcessList = Process.GetProcesses();
            for (int i = 0; i < processList.Length; i++) //Переключаем старые элементы
            {
                bool isDead = true; //Предположим, что процесс мертв
                for (int j = 0; j < newProcessList.Length; j++) //Элемент из старого сравниваем со всеми элементами нового
                    if (processList[i].Id == newProcessList[j].Id) isDead = false; //Если встречаем старый процесс в новом списке, то он жив
                if (isDead)
                {
                    try
                    {
                        string[] row = { processList[i].ProcessName, processList[i].StartTime.ToString("HH:mm:ss"), DateTime.Now.ToString("HH:mm:ss") };
                        dgv.Rows.Add(row);                        
                    }
                    catch
                    {
                        string[] row = { processList[i].ProcessName, "Error", DateTime.Now.ToString("HH:mm:ss") };
                        dgv.Rows.Add(row);
                       
                    }
 
                }
            }
            processList = newProcessList;
        }
        }
}

Решение задачи: «Вывести строки в файл»

textual
Листинг программы
catch (Exception er)
{
    MesssageBox.Show(er.Message);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы