1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Erro em thread c#

Discussão em 'Programação' iniciada por wrproject, 12 de Fevereiro de 2009. (Respostas: 1; Visualizações: 1035)

  1. wrproject

    wrproject Power Member

    Criei uma thread que vai chamar um método da propria classe,mas incrivelmente ele da-me o seguinte erro:

    Cannot create instance of 'Window1' defined in assembly 'ServerViewer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. Error in markup file 'Window1.xaml' Line 1 Position 9.
    em baixo ponho o meu código actual:


    Código:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.ComponentModel;
    using System.Data;
    using System.Threading;
    using System.Windows.Forms;
    using System.IO;
    using System.Net.Sockets;
    
    namespace ServerViewer
    {
    
    
    
       
    
    
    
    
        /// <summary>
        /// Interaction logic for Window1.xaml
        /// </summary>
        /// 
    
        public partial class Window1 : Window
        {
            Thread oThread;
    
            const int portNo = 8245;
    
            public static TcpListener listener;
    
            private static Bitmap bmpScreenshot;
    
            private static Graphics gfxScreenshot;
    
            static TcpClient cliente;
            
    
            public Window1()
            {
                InitializeComponent();
    
    
                System.Net.IPAddress[] a =
    System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName());
    
    
                System.Net.IPAddress localAdd = a[0];
                //System.Windows.MessageBox.Show(a[0].ToString());
              listener = new TcpListener(localAdd, portNo);
                listener.Start();
    
                //trhead que vai aguardar por conexões
                Window1 tt = new Window1();
                new Thread(tt.Listening).Start();
                tt.Listening();
                
    
                
            
            }
    
    
            void OnCloseForm(object sender, CancelEventArgs e)
            {
                
                //terminar a thread
                oThread.Abort();
                listener.Stop();
                
                
            }
    
    
           
    
           
           
    
            public void Listening()
            {
    
    
                //Window1 janela = new Window1();
    
    
    
                
                    //Quando um cliente conceta ao servidor,a caixa de texto é actualizada por
                    //"cliente conectado"
                while (true)
                {
                    cliente = listener.AcceptTcpClient();
                    System.Windows.MessageBox.Show("conectado");
    
                }
                 //   janela.state.Text = "Cliente conectado";
                
                //tt.Text = "ooo";
               // System.Windows.Controls.TextBox t=new Window1().state;
               // t.Text = "elizeu";
                //this.listener
    
            }
    
    
            
            private void BtPrintClicked(object sender, RoutedEventArgs e)
            {
                
    
                
                //quando este botao é clicado,é enviado um bitmap pro cliente
    
                this.Hide();
    
                bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    
                // Create a graphics object from the bitmap
    
                gfxScreenshot = Graphics.FromImage(bmpScreenshot);
    
                // Take the screenshot from the upper left corner to the right bottom corner
    
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    
                // Save the screenshot to the specified path that the user has chosen
    
                MemoryStream ms = new MemoryStream();
                bmpScreenshot.Save(ms, ImageFormat.Png);
    
                System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
                Byte[] data=encoding.GetBytes("ola elizeu");
                
    
                
    
                //this.Close();
    
            }
    
    
    
        }
    
        }
    
    
     
  2. Granadafeup

    Granadafeup Power Member

    No teu constructor estas a criar um thread nova para executar a função tt.Listening e logo a seguir chamas a mesma função.

    Código:
                new Thread(tt.Listening).Start();
                tt.Listening();
    
    É mesmo necessário?
     

Partilhar esta Página