#c# #debugging #file-io #process
#c# #отладка #file-io #процесс
Вопрос:
У меня странная проблема. Я написал некоторый код, который должен объединить имена и фамилии в csv-файл.
Пока я выполняю программу в режиме отладки (я использую c # / .NET в качестве языка), файл правильно сгенерирован и заполнен. Но как только я просто запускаю программу, программа не завершается. Кроме того, созданный файл не заполняется. В проводнике Windows я вижу, что доступ к файлу осуществляется все время, пока программа запущена.
Я пробовал такие вещи, как «Environment.Exit (0);» или «return», но пока ничего не помогло. Проблема может быть глупой и легко решаемой, хотя я не получаю для нее решения: ( ..
Заранее большое спасибо за вашу помощь!!
using System.IO;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string[] nachname = File.ReadAllLines(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugname.txt", Encoding.UTF8);
string[] vorname = File.ReadAllLines(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugvorname.txt", Encoding.UTF8);
int zaehler = 0;
int zaehlerwhile = 0;
int nachnamezaehler = 0;
int laengenachname = nachname.Length;
int laengevorname = vorname.Length;
string[] NachnameUndVornamen = new string[laengenachname * laengevorname];
while (zaehlerwhile < laengevorname)
{
NachnameUndVornamen[zaehler] = vorname[zaehlerwhile] nachname[nachnamezaehler];
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugnameundvorname.csv"))
{
file.Write(string.Join(";", NachnameUndVornamen));
}
zaehler ;
nachnamezaehler ;
if (nachnamezaehler == laengenachname) {
zaehlerwhile ;
nachnamezaehler = 0;
}
}
}
}
}
Ответ №1:
Поместите весь ваш код в статический метод вне основной функции. Вызовите эту функцию внутри static void Main(string[] args) как
public static void ProcessData()
{
string[] nachname = File.ReadAllLines(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugname.txt", Encoding.UTF8);
string[] vorname = File.ReadAllLines(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugvorname.txt", Encoding.UTF8);
int zaehler = 0;
int zaehlerwhile = 0;
int nachnamezaehler = 0;
int laengenachname = nachname.Length;
int laengevorname = vorname.Length;
string[] NachnameUndVornamen = new string[laengenachname * laengevorname];
while (zaehlerwhile < laengevorname)
{
NachnameUndVornamen[zaehler] = vorname[zaehlerwhile] nachname[nachnamezaehler];
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:UsersXXXsourcereposNameUndVornameNameUndVornameobjDebugnameundvorname.csv"))
{
file.Write(string.Join(";", NachnameUndVornamen));
}
zaehler ;
nachnamezaehler ;
if (nachnamezaehler == laengenachname) {
zaehlerwhile ;
nachnamezaehler = 0;
}
}
}
Теперь просто вызовите его в основной функции как:
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ProcessData();
}
}
}