C# Прием файла по сети

246
24 января 2018, 12:48

Пишу клиент серверное приложение, в котором передаются файлы по сети. Собственно, само приложение работает хорошо, задачи выполняет, но когда я закрываю серверную часть,- программ виснет.

Вот код серверной части:

    NetworkStream myns;
    TcpListener mytcpl; 
    Socket mysocket;
    Thread myth;
    BinaryReader bb;
    void File_Receiver()
    {
        mytcpl = new TcpListener (7000);
        mytcpl.Start ();
        mysocket = mytcpl.AcceptSocket ();
        myns = new NetworkStream (mysocket);
        BinaryFormatter br = new BinaryFormatter ();
        object op;
        op= br.Deserialize (myns); // Deserialize the Object from Stream

        bb = new BinaryReader (myns);
        byte[] buffer = bb.ReadBytes(5000000);
        FileStream fss = new FileStream(@textBox1.Text + (string) op, FileMode.CreateNew, FileAccess.Write);
        fss.Write(buffer,0,buffer.Length);
        fss.Close();
        mytcpl.Stop();
        listBox1.Items.Add ("Successfully Saved to: " + textBox1.Text + (string) op);
        if (mysocket.Connected ==true)
        {
            while (true)
            {
                File_Receiver();
            }
        }
    }
 Также я определил, что зависание происходит при закрытии формы на соответсвующем обработчике этой формы:
   private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        myth.Abort ();
        mytcpl.Stop ();
    }

Как мне победить это проблему?

P.S. Да, нити запускаются как положено в обработчике формы и работают хорошо, пока не пытаюсь закрыть форму:

           private void Form1_Load(object sender, System.EventArgs e)
        {
        myth= new Thread  (new System.Threading.ThreadStart(File_Receiver)); 
                           // Start Thread Session
            myth.Start ();
         }
READ ALSO
Реализовать foreach для обобщенного класса

Реализовать foreach для обобщенного класса

Есть класс - реализация очереди через List

156
ASP.Net Core, как получить все выбранные значения тегов Select?

ASP.Net Core, как получить все выбранные значения тегов Select?

Предположим я на странице леплю формочку в которой несколько элементов select, вот такой код

242