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

   Á¶È¸ 6823   Ãßõ 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 4173/5688
2014-05   5000713   Á¤ÀºÁØ1
2015-12   1536574   ¹é¸Þ°¡
2014-06   6824   ±è°Ç¿ì
2011-05   6824   µ¥À̺ñµå
2004-11   6824   ±è°Ç¿ì
2009-09   6824   ÇãÁøÇüALpha
2016-10   6824   µþ±â´ëÀå
2010-11   6824   ¸ùÀ̾ƹü
2005-01   6824   ±è´ëÆò
2012-06   6824   º´¸ÀÆù
2014-08   6824   ÇÑÈ¿¼®
2012-10   6824   À嵿°Ç2014
2019-02   6824   À¯·ÉEÁ¤ÇØÁØ
2018-01   6824   rÀ̽¿ør
2004-09   6825   ¹ÚÀ̹è
2015-12   6825   DzÈ÷Èþ
2004-10   6825   ÀÌ⹬
2005-03   6825   ¹ÎºÀ±â
2015-05   6825   ½½·çÇÁ
2009-05   6825   Â÷Æò¼®
2011-02   6825   ÀÌÁ¾¿ø
2016-11   6825   ´ÃÆĶõ