C# ÇÁ·Î±×·¥ ¿ø°ÝÁ¢¼Ó½Ã È­¸é°»½Å ¹®Á¦ ¹®ÀÇ

   Á¶È¸ 6817   Ãßõ 0    

안녕하세요.

제가 지금 통신서버SW를 한개 만들고 있는데요.

하도 원인을 못 찾아서 이렇게 한번 여쭈어봅니다. ^^

1. 증상:

시리얼 통신서버쪽인데요. 8군데 정도 시리얼포트와 연결되어서 각각 신호에 맞게 반응만 하면 되는 SW인데요.

개발환경은 C#, 닷넷4.0 입니다. 기본 VS2012에 있는 걸로 작업을 했었고, 시리얼통신lib도 vs2012내부에 있는

것으로 작업을 했습니다. 시리얼은 각각 한개씩 thread를 배정을 했고요.

화면은 listbox로 개별로 올라오는 데이타에 맞게 화면에 갱신합니다.


일단 콘솔에서는 이상없이 잘 동작이 되고, 화면 갱신도 잘 됩니다. 

이런 상태에서 원격으로 해당 서버에 접속을 하면 화면이 딱 멈춰버립니다.

그 뒤로는 콘솔로 로긴해도 역시 화면이 멈춘채로 있습니다.

물론 내부 개별 thread는 잘 동작되고 있습니다.

외부에서 보이는 화면UI가 죽은 것 같은데요.

원격으로 접속한다고....이런 경우도 있나요?

서버SW라서 외부에서 관리차원에서 접속해서 작업해야 되기 때문에 꼭 되어야 되는 기능이라서.. ^^

오늘 하루종일 이것 가지고, 계속 인터넷 검색중인데..도저히 못 찾겠네요.


서버SW와는 별개로 테스트용으로 만든 시리얼 시뮬레이터 SW는 (서버SW와 기본코드는 동일합니다.) 

대충 화면을 만들고 했는데..이건 잘 동작하네요.

뭐가 문제인지 모르겠습니다.

코드 vs 코드로 비교해보고 있지만.... 전혀..감이 안 잡힙니다. ^^






ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
.NET Framework 3.5 ·Î °³¹ß ÇϽôøÁö ¾Æ´Ï¸é
±×ÀÌ»óÀÏ °æ¿ì¿¡´Â UI Thread 󸮸¦ ÇØÁÖ¼Å¾ß µÉµíÇÕ´Ï´Ù.
¾Æ·¡´Â ¿¹Á¦ ÄÚµåÀÔ´Ï´Ù.
 this.Invoke(new Action(delegate()
                    {
                        ÆûÄÁÆ®·Ñ.Text = "UI Thread¿¡¼­ ó¸®µÇ°Ô ÇÑ´Ù";
                    }));
     
+1
     
invoke ´Â ±âº»À¸·Î ´Ù ó¸®Çß½À´Ï´Ù.
UI THREAD ¹®Á¦´Â ¾Æ´Ñ °Í °°¾Ö¿ä.
¸ÖÂÄÈ÷ Àß µ¹¾Æ°¡°í ÀÖ´Â È­¸éÀ» ¿ø°ÝÀ¸·Î Á¢¼ÓÇß´Ù°í..¾È µ¹¾Æ°¡´Â °æ¿ì¶ó¼­...
Àúµµ ÀÌ·± °æ¿ì°¡ óÀ½À̶ó¼­... ´çȲÇÏ°í ÀÖ¾î¿ä.
¾ÈµÇ¸é¸Ó.... »õ ÇÁ·ÎÁ§Æ® ÇÑ°³ ¸¸µé¾î¼­ ÇÑÁÙ¾¿ Çѹø ¿Å°ÜºÁ¾ßÁÒ ¸Ó..
°¨»çÇÕ´Ï´Ù.
          
Ȥ½Ã Æû ¼Ó¼º¿¡ DoubleBuffered °¡ True ¶ó¸é False ·Î º¯°æÇغ¸¼¼¿ä.
               
È®ÀÎÇغôµ¥ false »óÅÂÀÔ´Ï´Ù. °¨»çÇÕ´Ï´Ù.
Ȥ½Ã Worker Thread ¿¡¼­ ÁÖ±âÀûÀ¸·Î °»½ÅÇÏ´Â À̹ÌÁö°¡ ÀÖ³ª¿ä?
     
³×..ÀÖ½À´Ï´Ù. worker¿Í thread¿¡¼­ ¹öÅÏÀ̹ÌÁö¸¦ °è¼Ó º¯°æ½Ãŵ´Ï´Ù.
°°Àº ÇÔ¼ö¸¦ ÄÝÇؼ­ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.
pbTime.BeginInvoke(new Action(() => pbTime.Load(GreenCircleImage.ToString())));
¿ä·¸°Ô Çؼ­ ¸ðµÎ invoke·Î ó¸®Çß½À´Ï´Ù.
À̹ÌÁö °»½ÅÀ̶û ¿ø°ÝÁ¢¼ÓÀ̶û ¹®Á¦°¡ ÀÖ³ª¿ä?
          
¿ø°ÝÁ¢¼Ó¸¸ ±×·±°Ç ¾Æ´Ï±ä ÇÕ´Ï´Ù.
¿øÄ¢ÀûÀ¸·Î´Â À̹ÌÁö°¡ °»½ÅµÈ´Ù¸é Paint À̺¥Æ® 󸮸¦ ÇØÁÖ´Â°Ô ¸Â½À´Ï´Ù.
ÇØ´ç ¹öÆ°¿¡ Paint À̺¥Æ® 󸮸¦ ÇØÁຸ¼¼¿ä. (Æû¿¡µµ ÇØÁÖ´Â°Ô ÁÁÀ» °Í °°±ä ÇÕ´Ï´Ù)
               
³Ü..°¨»çÇÕ´Ï´Ù. ^^
´ëÃæ Àǽɽº·¯¿î °÷µµ ÇÑ°÷ ¹ß°ßÇß½À´Ï´Ù.
³»ÀÏ°¡¼­ È®ÀÎÇغÁ¾ßµÉ µí ÇÕ´Ï´Ù.
ÁñÀáÇϼ¼¿ä. ^^
          
¹«¾Æ 2016-10
¿öÄ¿ ¾²·¹µå¿¡¼­ (¸ÞÀÎ ¾²·¹µåÀÇ)UI °ü·Ã ÄÄÆ÷³ÍÆ®¿¡ º¯°æÀ» ÇÒ °æ¿ì invoke action À» ½á¼­ ÇÏ´Â°Ô ÆíÇϱ⵵ ÇÏÁö¸¸
Àú´Â ¾²·¹µå¿¡¼­ sendmessage ·Î ½÷ ÁÖ°í WndProc ¸¦ ¿À¹ö¶óÀ̵å Çؼ­ ¹Þ¾Æ ¾²´Â °ÍÀÌ ¾î¶³ ¶© ´õ ÆíÇÏ°í ¾ÈÁ¤ÀûÀÎ ´À³¦ÀÌ µé¾ú½À´Ï´Ù.
ÇÊ¿ä¿¡ µû¶ó¼± sendmessage ¸»°í sendmessageEx ³ª  postmessage·Î ½î´Â °Íµµ...
               
Àû´çÈ÷ ¾÷¹«°ü·Ã ÇÁ·Î±×·¥ÇÏ´Â ÂÊÀ̶ó¼­...^^ win32api°ü·ÃÂÊÀº º°·Î Çغ» ÀûÀ̾ø¾î¼­¿ä.
ÀÏ´Ü ¹®Á¦´Â °ø¿ëclassÂʹ®Á¦¿´½À´Ï´Ù. sendmessage ·Î Á¤¸®Çϴϱî..º° ÀÌ»ó¾øÀÌ Àß µ¹¾Æ°©´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
ÇØ°áÇß½À´Ï´Ù.
IPC Åë½ÅÂÊÀÌ¿´³×¿ä. sendmessage  win_proc°°Àº °ÍÀ» °ø¿ëÀ¸·Î »ç¿ëÇÏ·Á°í °ø¿ëclassÂÊ¿¡ form À» »ó¼Ó¹Þ°Ô ¸¸µé¾î¼­..
º» ÇÁ·Î±×·¥ÂÊ¿¡¼± ±×³É Ŭ·¡½º ¼±¾ð¸¸ ÇÏ´Â °ÍÀ¸·Î ±ò²ûÇÏ°Ô ¸¸µé¾ú´Âµ¥..
ÀÌ°Ô ¹®Á¦¿´³×¿ä. Äֿܼ¡¼­´Â Àß µ¿ÀÛÇؼ­ ±¦Âú´Ù°í ³Ñ¾î°£ °ÍÀÌ¿´´Âµ¥..
¸ÞÀÎÂÊÀ¸·Î ¿Å°Ü¼­ sendmessage¸¦ ´Ù½Ã Á¤¸®Çϴϱî..Àß µ¹¾Æ°©´Ï´Ù.
°¨»çÇÕ´Ï´Ù. ^^


QnA
Á¦¸ñPage 1773/5687
2014-05   4991179   Á¤ÀºÁØ1
2015-12   1527166   ¹é¸Þ°¡
2003-05   10376   °íµ¿Çö
2006-01   4862   ¹æÈ¿¹®
2023-03   1115   Áö´ÏÄÄI¿µÁø
2020-03   2548   ¹Ý¼º¸¸
2006-02   4925   ¹éÀÎÇÐ
2019-02   4499   ±èȲÁß
2016-10   6818   µþ±â´ëÀå
2017-11   5198   witbox
2021-08   2115   ´ÃÆĶõ
2016-10   4266   ¾ËÅä³É
2003-06   11328   À̺´Çå
2014-06   6143   µ¥À̺ñµå
2015-10   3998   ¹Î»çÀå
2016-10   8129   CPDLC
2003-06   8894   ³ë¼±±Ô
2014-06   7928   ¹æoÈ¿o¹®
2023-03   1078   ¼úÀÌ
2006-03   6344   ¾çâ±Ç
2012-09   18623   viper9
2021-08   2554   ³Ä¹Ì³Ä¹Ì