2010-06-14 2 views
1

C# newbie here. 이 사용자가 나에게 내 문제에 대한 아주 좋은 솔루션을 준 것처럼C#은 정적 함수에서 참조 할 수 없습니다.

같다 :

serialport error

을하지만 난 그가 무엇을 제안 최대 코딩하는 방법을 단서가 없다. 너 도와 줄 수있어?

+0

그는 한 시간 전에 원래의 질문에 답변했습니다. 조금만 인내심을 갖고 도움을 요청할 때까지 기다립니다. 다른 질문을하는 것이 가장 적절한 방법이라고 생각하지 않습니다. – razlebe

+1

@sgreeve : 나는 혼란을 이해합니다. 때로는 사람들이 새로운 질문을 작성하는 대신 질문을 변경 한 것에 대해 비난을 받기도합니다. – egrunin

답변

2

이렇게하면 정상적으로 컴파일됩니다. 물론 thePort 실제 설정을 제공해야합니다.

namespace csWinFormsTest 
{ 
    public partial class Form1 : Form 
    { 
     static System.IO.Ports.SerialPort thePort; 
     public Form1() 
     { 
      InitializeComponent(); 
      thePort = new System.IO.Ports.SerialPort("COM1"); 
     } 

     static void fcn() 
     { 
      MessageBox.Show(thePort.PortName); 
     } 
    } 
} 
+0

죄송합니다. 원래 코드를 가져 와서이 코드가 어떻게 나타나는지 보여주십시오. –

2
public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private static SerialPort serialPort1; 
     public class ThreadWork 
     { 

      public static void DoWork() 
      { 
       serialPort1 = new SerialPort(); 
       //stuff 
      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork); 
      Thread myThread = new Thread(myThreadDelegate); 
      myThread.Start(); 
     } 

     private void serialPort1_DataReceived_1(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
     { 
      string response = serialPort1.ReadLine(); 
      this.BeginInvoke(new MethodInvoker(() => textBox1.AppendText(response + "\r\n"))); 
     } 
    } 

실제로 DoWork() 정적 인 것은 필요하지 않습니다.

관련 문제