Файл записывается только в режиме отладки

#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();
        }
    }
}