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

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

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

не могу в методе refreshDeadProcessInfo() вывести строки в txt
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace WindowsFormsApplication1
  13. {
  14. public partial class Form1 : Form
  15. {
  16. public List<Processes> procList = new List<Processes>();
  17. private Process[] processList = Process.GetProcesses();
  18. public int count = 0;
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. List<Processes> procList = new List<Processes>();
  23. dataGridView1.AutoGenerateColumns = true;
  24. bindingSource1.DataSource = this.procList;
  25. Timer tmr = new Timer();
  26. tmr.Interval = 500;
  27. tmr.Tick += new EventHandler(tmr_Tick);
  28. tmr.Start();
  29. }
  30. private void tmr_Tick(object sender, EventArgs e)
  31. {
  32. try
  33. {
  34. this.procList.Clear();
  35. foreach (var winProc in Process.GetProcesses())
  36. {
  37. string min_threads = "";
  38. string totalProcessorTime = "";
  39. try
  40. {
  41. min_threads = winProc.Threads.OfType<ProcessThread>().Where(t => t.ThreadState == ThreadState.Running).Count().ToString();
  42. totalProcessorTime = winProc.TotalProcessorTime.ToString();
  43. }
  44. catch (Exception er)
  45. {
  46. }
  47. this.procList.Add(new Processes(winProc.Id.ToString(), winProc.ProcessName, winProc.PeakVirtualMemorySize64.ToString(), winProc.WorkingSet64.ToString(), totalProcessorTime));
  48. }
  49. dataGridView1.DataSource = this.procList;
  50. dataGridView1.Refresh();
  51. refreshDeadProcessInfo();
  52. }
  53. catch (DataException er)
  54. {
  55. MessageBox.Show(er.Message, "Ошибка обновления данных.");
  56. }
  57. }
  58. private void button1_Click(object sender, EventArgs e)
  59. {
  60. string data = "";
  61. int row = Convert.ToInt32(dataGridView1.CurrentCell.RowIndex);
  62. int pid = Convert.ToInt32(dataGridView1[0, row].Value);
  63. Process process = Process.GetProcessById(pid);
  64. string process_name = process.ProcessName;
  65. foreach (ProcessThread thread in process.Threads)
  66. {
  67. data += "ID: " + thread.Id + ", Состояние: " + thread.ThreadState + "\n";
  68. }
  69. MessageBox.Show(data, "Информация о процессе " + process_name);
  70. }
  71. private void bindingSource1_CurrentChanged(object sender, EventArgs e)
  72. {
  73. }
  74.  
  75. private void button2_Click(object sender, EventArgs e)
  76. {
  77. saveFileDialog1.DefaultExt = "txt";
  78. if(saveFileDialog1.ShowDialog() == DialogResult.OK)
  79. {
  80. string filename = saveFileDialog1.FileName;
  81. StreamWriter sw = new StreamWriter(filename);
  82. string start_time ="Нет доступа к информации о процессе";
  83. foreach (var winProc in Process.GetProcesses())
  84. {
  85. try
  86. {
  87. start_time = winProc.StartTime.ToString();
  88. }
  89. catch (Exception er)
  90. {
  91. }
  92. sw.WriteLine(winProc.Id + "Имя:" + winProc.ProcessName + ", Время старта:" + start_time);
  93. }
  94. sw.Close();
  95. }
  96. }
  97. private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
  98. {
  99. }
  100. private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { }
  101.  
  102. private void refreshDeadProcessInfo() //Метод обновляет информацию о мертвых процессах
  103. {
  104. string path = @"c:\Users\Мрр\Documents\MyTest.txt";
  105. Process[] newProcessList = Process.GetProcesses();
  106. for (int i = 0; i < processList.Length; i++) //Переключаем старые элементы
  107. {
  108. bool isDead = true; //Предположим, что процесс мертв
  109. for (int j = 0; j < newProcessList.Length; j++) //Элемент из старого сравниваем со всеми элементами нового
  110. if (processList[i].Id == newProcessList[j].Id) isDead = false; //Если встречаем старый процесс в новом списке, то он жив
  111. if (isDead)
  112. {
  113. try
  114. {
  115. string[] row = { processList[i].ProcessName, processList[i].StartTime.ToString("HH:mm:ss"), DateTime.Now.ToString("HH:mm:ss") };
  116. dgv.Rows.Add(row);
  117. }
  118. catch
  119. {
  120. string[] row = { processList[i].ProcessName, "Error", DateTime.Now.ToString("HH:mm:ss") };
  121. dgv.Rows.Add(row);
  122. }
  123. }
  124. }
  125. processList = newProcessList;
  126. }
  127. }
  128. }

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

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

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


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

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

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы