Вывести строки в файл - 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);
}