Помогите, пожалуйста, найти причину почему программа не создает новый файл. Суть проблемы: форма, где можно ввести ip и диапазон портов, кнопка "Scan" (запускает метод ScanPort из NetService.cs), в NetService.cs подключаемся к порту и если он открыт пишем в файл в корне С: строчку, что открыт (в блоке try), если не подключаемся, то в catch пишем в файл строчку, что порт закрыт. Имя файла создается на основе даты-времени в FileService.cs (работа с файлом идет через него). Проблема в том, что при запуске в VS первый раз файл создается, а дальше, если мы не перезапускаем приложение, а повторно нажимаем кнопку Scan, даже изменив ip/порты, либо идет дозапись в данный файл (если StreamWriter file = new StreamWriter(Settings.path, true) ), либо все стирается и пишутся результаты нового сканирования (если стоит false). Хотя по логике должен создаваться новый файл c другим именем. В чем может быть проблема? Может что-то с освобождением ресурсов?
NetService.cs :
using System;
using System.Net.Sockets;
using System.Threading.Tasks;
namespace WinPortScanner
{
class NetService : IDisposable
{
public static void ScanPort(string ip, int startPort, int endPort)
{
int closedPort = 0;
if (startPort > endPort)
{
int tempPort = startPort;
startPort = endPort;
endPort = tempPort;
}
using (FileService fileService = new FileService())
{
using (TcpClient client = new TcpClient())
{
for (int port = startPort; port <= endPort; port++)
{
try
{
closedPort = port;
client.Connect(ip, port);
fileService.WriteOpen(ip, port);
client.Close();
}
catch (SocketException e)
{
fileService.WriteClose(ip, closedPort);
}
}
client.Close();
}
fileService.CloseFile();
}
}
public void Dispose()
{
}
}
}
FileSevice.cs :
using System;
using System.Threading.Tasks;
namespace WinPortScanner
{
class FileService : IDisposable
{
private StreamWriter file = new StreamWriter(Settings.path, true);
public void Dispose()
{
}
public void WriteOpen(string ip, int port)
{
file.WriteLine($"{DateTime.Now}, {ip}, {port}, Open");
}
public void WriteClose(string ip, int port)
{
file.WriteLine($"{DateTime.Now}, {ip}, {port}, Close");
}
public void CloseFile()
{
file.Close();
}
}
}