|
||
0
0
[* ºñȸ¿ø *]
ÀúµµwinformÀ» Àß ¸ô¶ó Â÷¼±À¸·Î Æú¸µÀ» Á¦¾ÈÇغ¾´Ï´Ù. Æû¿¡¼ ó¸®ÇÏÁö ¸¶½Ã°í µÎ ÀÛ¾÷ ¸ðµÎ ¾²·¹µå¿¡¼ ó¸®ÇÏ½ÃµÇ Æû¿¡¼´Â ŸÀ̸ӵîÀ¸·Î 󸮰á°ú¸¦ È®ÀÎÇØ È¸é¿¡ Ç¥½ÃÇØ Áִ½ÄÀ¸·Î¿ä.
|
0
0
[* ºñȸ¿ø *]
À½.. Á¦°¡ ¾Æ´Â ±× Æú¸µÀÌ ¸Â´Ù¸é ¾Æ¸¶ ¾ÈµÉ°Å °°³×¿ä.
¿¹Àü¿¡ msdn¿¡¼ delegate¸¦ ÀÌ¿ëÇÑ ºñµ¿±â ó¸® ¿¹Á¦Äڵ尡 Àֱ淡 °¡Á®¿Í¼ µ¹·ÁºÃ´Âµ¥¿ä. BeginInvoke ÇÏ´Â ¼ø°£ À̺¥Æ®Ã³¸® ¸Þ¼Òµå°¡ ¹Ù·Î ½ÇÇàµÇ´õ±º¿ä. À̺¥Æ®°¡ ¹ß»ýÇؼ ¸Þ¼Òµå°¡ ½ÇÇàµÇ¾ß Çϴ°ǵ¥ À̺¥Æ®°¡ ¹ß»ýÇÏÁöµµ ¾Ê¾Ò´Âµ¥ ¸Þ¼Òµå°¡ ½ÇÇàµÇ¹ö¸®´Â.. »ý¼ºÀÚ¿¡¼ session._IXASessionEvents_Event_Login += new _IXASessionEvents_LoginEventHandler(SessionEvent_Login); ÀÌ·¸°Ô À̺¥Æ® µî·ÏÀ» ÇÏ°í private void SessionEvent_Login(string szCode, string szMessage) { if (szCode == "0000") { IsLoginActivate = true; } LastErrorCode = int.Parse(szCode); LastErrorMessage = szMessage; } ÀÌ·¸°Ô ó¸®ÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù. (·Î±×ÀÎ ¿äûÀ» ÇÏ´Â ¸Þ¼Òµå´Â µû·Î Àִµ¥, ±ÛÀÌ ±æ¾îÁú°Å °°¾Æ »ý·«Çß½À´Ï´Ù.) ¹®Á¦´Â Á¦°¡ ´ë¸®ÀÚ·Î SessionEvent_LoginÀ» ÁöÁ¤Çؼ º°µµÀÇ ¾²·¹µå·Î µ¹¸®¸é ¾ÈµË´Ï´Ù. À̺¥Æ®°¡ ¹ß»ýÇÑ ¼ø°£ ¾²·¹µå°¡ ½ÃÀÛÇϴ°Ŷó¸é ¸ð¸¦±î... ¸¸¾à ´ë¸®ÀÚ·Î °Á¦È£ÃâÀ» ÇÏ¸é ¼¹ö·Î ÀÀ´ä¹ÞÀº°Ô ¾ø±â¶§¹®¿¡ ¸Å°³º¯¼ö¿¡ ¾Æ¹«·± °ªÀÌ ¾ø½À´Ï´Ù. Á¦ »ý°¢À¸·Ð 1. À̺¥Æ®°¡ ¹ß»ýÇÏ¸é ¹é±×¶ó¿îµå ¾²·¹µå°¡ SessionEvent_Login ¸Þ¼Òµå¸¦ ó¸®ÇÑ´Ù. 2. À̺¥Æ® ¹ß»ýÇÏ´Â ¼ø°£À» ijġÇÑ´Ù. ÀÌ µÎ°¡Áö »ÓÀÎ°Í °°Àºµ¥¿ä. ÀÌ°É ¾î¶»°Ô ±¸ÇöÇؾßÇÏ´ÂÁö ¸ð¸£°Ú½À´Ï´Ù. |
0
0
[* ºñȸ¿ø *]
À§¿¡ ÀûÀ¸½Å Äڵ忡´Â ¾²·¹µå¸¦ »ç¿ëÇÒ ºÎºÐÀÌ ¾ø½À´Ï´Ù. SessionEvent_Loginµµ Á÷Á¢ È£ÃâÇÏ´Â°Ô ¾Æ´Ï°í ±×³É ³öµÎ¸é COM¿¡¼ È£ÃâÇØÁÝ´Ï´Ù. ·Î±ä ¿äûÇÏ´Â ºÎºÐÀÌ ·¢ÀÌ »ý±ä´Ù¸é ±×ºÎºÐ¸¸ ¾²·¹µå·Î ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù. À©ÆûÀº ŸÀ̸ӿ¡¼ ÁÖ±âÀûÀ¸·Î ·Î±ä À̺¥Æ®°¡ 󸮵Ǿú´ÂÁö È®ÀÎÇÕ´Ï´Ù. (¿¹¸¦µé¾î LastLoginHandled¸¦ Á¤ÀÇÇÏ°í SessionEvent_Login ³»¿¡¼ true ·Î ¼³Á¤, ŸÀ̸ӿ¡¼ ±×°ÍÀÌ trueÀÎÁö °Ë»çÇؼ °á°ú Ãâ·Â ÇÏ½Ã¸é µÇ°Ú³×¿ä.
|
0
0
[* ºñȸ¿ø *]
Á¦°¡ ¼³¸íÀ» ¾î·Æ°Ô Çص帰 °Í °°³×¿ä.
¾Æ·§ºÐÀÌ ¸»¾¸ÇϽŠºñµ¿±â󸮸¦ µ¿±âó¸®ÇÏ´Â °Ô Á¦°¡ ¿øÇÏ´ø °ÍÀÌ¿´¾î¿ä. ¸»¾¸µå·È´Ù ½ÃÇÇ API¿¡¼´Â ¿äûºÎºÐ°ú ¼¹ö ÀÀ´äºÎºÐÀÌ ³ª´²Á® ºñµ¿±â ó¸®ÇÏ´Â µ¥ ÀÌ°É ¸ÞÀÎÆû Äڵ忡¼ ´Ù ÀÏÀÏÀÌ Ã³¸®ÇØÁÖ·Á¸é Äڵ尡 ÁöÀúºÐÇØÁö´õ¶ó°í¿ä. ±×·¡¼ ºñµ¿±â¸¦ µ¿±â·Î ó¸®Çϴ Ŭ·¡½º¸¦ µû·Î ¸¸µé¾î ±ò²ûÇÏ°Ô bool ŸÀÔÀ¸·Î ¼º°ø ½ÇÆÐ ¿©ºÎ¸¸ ¹ÞÀ»·Á°í Çß¾úÁÒ. ±×·±µ¥ µ¿±âó¸®Çϴ Ŭ·¡½º¿¡¼µµ ¿äû ºÎºÐ°ú ÀÀ´ä À̺¥Æ® ó¸® ºÎºÐÀ¸·Î ¸Þ¼Òµå¸¦ µÎ°³·Î ³ª´ ¼ö ¹Û¿¡ ¾ø´õ±º¿ä. Á¦°¡ ·Î±×ÀÎ ¹öÆ°À» µü ´©¸£¸é ÇϳªÀÇ °úÁ¤À¸·Î Âß Èê·¯°¡¾ßÇϴµ¥ ¾Æ½Ã´Ù½ÃÇÇ ¹öÆ° Ŭ¸¯ À̺¥Æ®¿Í ¼¹ö·ÎºÎÅÍ ¹Þ´Â À̺¥Æ®´Â ´Ù¸£ÁÒ. ¹öÆ° Ŭ¸¯ À̺¥Æ®¿Í ¿¬°áµÈ ¸Þ¼Òµå󸮰¡ ¿Ï·áµÇÁö ¾ÊÀ¸¸é ´ÙÀ½ À̺¥Æ®¸¦ ó¸®ÇÒ ¼ö ¾ø¾ú´ø °Å¿¡¿ä. ±×·¡¼ Á¦°¡ °è¼Ó À̺¥Æ®¹ß»ýÀ» °¨ÁöÇÏ´Â ¹æ¹ýÀÌ ¾øÀ»±î ¸»¾¸µå·È´ø °Ì´Ï´Ù. AutoResetEvent °°Àº°É °É¾îµÎ¸é ¹öÆ° Ŭ¸¯ À̺¥Æ® ó¸® ÁßÀÌ¶ó¼ ¿äûó¸® ¸Þ¼Òµå¿¡¼ ¹«ÇÑ´ë±âÇÏ°Ô µÇ°í, ÀÀ´ä À̺¥Æ® ó¸® ¸Þ¼Òµå¸¦ ´ë¸®ÀÚ·Î ÀÀ´ä À̺¥Æ®¸¦ ó¸®ÇÏÀÚ´Ï ¾ÆÁ÷ ¹ÞÀº À̺¥Æ®°¡ ¾ø¾î¼ 󸮰á°ú°ªÀÌ ¾ø¾ú´ø °Ì´Ï´Ù. °á±¹ À̺¥Æ®¹ß»ýÀ» °¨ÁöÇÏ°í ±× À̺¥Æ® °ªÀ» °¡Á®¿Í¼ ¸ÕÀú ó¸®ÇÏ°Ô²û ÇÏ´Â ¹æ¹ý¹Û¿¡ ¾ø´Âµ¥ °Ë»ö¾î°¡ À߸øµÆ³ª ±¸±ÛÀ» ¾Ï¸¸ µÚÁ®µµ ÇØ°áÃ¥ÀÌ ¾È³ª¿À´Â°Å¿¡¿ä. ¤Ð¤Ð ¿À´ÃÀº À̺¥Æ®°¡ ¹ß»ýÇÏ¸é ¿¹¿Ü¸¦ ¹ß»ýÇÏ°Ô Çؼ catch¹®À¸·Î Àâ¾Æº¼±îÇÏ´Â »ý°¢µµ Çß¾ú³×¿ä. ±×·¯´Ù°¡ ¹æ±Ý Application.Doevent() ¸¦ ÀÌ¿ëÇؼ ÇØ°áºÃ½À´Ï´Ù. Áö±Ý ó¸®ÁßÀÎ ÀÛ¾÷À» Àá½Ã ¸ØÃß°í, ÇöÀç ¸Þ½ÃÁöÅ¥¿¡ ÀÖ´Â ¸ðµç Windows ¸Þ½ÃÁö¸¦ ¸ÕÀú ó¸®ÇÏ°Ô ÇÏ´Â ¸Þ¼ÒµåÀε¥, °Á¦·Î ½ÇÇàÇÏ´Â ¸í·É¾îÀ̱⠶§¹®¿¡ »ç¿ëÀ» ±ÇÀåÇÏÁö ¾Ê´Â´Ù°í Çϳ׿ä. ¸îÀÏÀ» »ðÁúÇߴµ¥ °£´ÜÇÑ ¸í·É¾î·Î ÇØ°áµÇ´Ï±î ÇãÅ»°¨ÀÌ µéÁö¸¸ Áö±ÝÀº ±ÞÇÏ´Ï±î ¶«»§ÇÏ°í, ³ªÁß¿¡ ½Ã°£ÀÌ ³ª¸é ¸Þ½ÃÁöÅ¥¿¡ ÀÖ´Â ¸ñ·Ï¿¡¼ Á¦°¡ ã´Â À̺¥Æ®°¡ ÀÖ´ÂÁö ã¾Æ¼ ¸ÕÀú ½ÇÇàÇÏ´Â °É ±¸ÇöÇغÁ¾ß °Ú¾î¿ä. ¾Æ¹«Æ° ½Ã°£³»¾î ´äº¯ÇØ Áּż °¨»çÇÕ´Ï´Ù. |
0
0
º½-º½
com °´Ã¼ÀÇ ºñµ¿±â ó¸®µÇ´Â°É µ¿±âÈ Ã³¸®ÇÏ°í ½ÍÀº°Ç°¡¿ä?
±×·¯¸é ¾Æ·¡¿Í °°ÀÌ api ÄÝÀ» µ¿±âó¸®Çϴ Ŭ·¡½º¸¦ ¸¸µé¾î ÁÖ¸é µË´Ï´Ù. public class ApiCall { public int CallNo; // ¿©·¯°³ÀÇ ÀνºÅϽº¸¦ ¸¸µé¾î apiCall Çϴ°æ¿ì ±¸ºÐÇϱâ À§ÇØ.. public bool compleate = false;; public ApiCall(int callNo) { this.CallNo = callNo; } public int CallApi() { compleate = false; ... API ÄÝ while(!compleate) {Thread.sleep(1000);} // callback°¡ ¿Ï·áµÉ¶§±îÁö ¹«±âÇÑ ´ë±â. Thread.Sleep¸¦ ÇÏÁö ¾ÊÀ¸¸é cpu fullÀÌ °É¸®¹Ç·Î ²À ¼öÇà. return callNo; } private void ApiCallback() { compleate = true; } } ±×·¡¼ Àú Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸¸µé°í ApiCall Æã¼ÇÀ» È£ÃâÇÏ¸é µÇ´Â°ÅÁÒ,. ±×·±µ¥ ÀÌ·¸°Ô È£ÃâÇÏ°í ´ë±âÇϴµ¿¾È ¸ÞÀÎÆûÀÌ Àá½Ã ¸ÔÅëÀÌ µÇ°ÚÁÒ. ÀÌ°É ¶Ç ¹æÁöÇÏ°í ½Í´Ù¸é BackgroundWorker ·Î ºñµ¿±â 󸮵ǵµ·Ï ÇØÁÖ½Ã¸é µË´Ï´Ù. À̶§´Â ºñµ¿±â Á¦¾î±ÇÀÌ com °´Ã¼°¡ ¾Æ´Ï¶ó ÇÁ·Î±×·¥¿¡ ÀÖ°í ApiCall Ŭ·¡½º¿¡ È£Ãâ ±¸ºÐÇϱâ À§ÇÑ CallNo ¸â¹öº¯¼öµµ ÀÖÀ¸´Ï ÀÔ¸À´ë·Î Á¦¾î°¡ °¡´ÉÇÒ°Ì´Ï´Ù. ¶Ç´Â ¿©·¯°³ÀÇ apicallÀ» µ¿½Ã¿¡ ÇÏ°í °ü¸®Çϱâ ÆíÇÏ°Ô ÇÏ·Á¸é ±×³É ApiCall Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¹è¿·Î ¸¸µé¾î ³õ°í ŸÀÓ¸Ó·Î ÀÏÁ¤Áֱ⸶´Ù °¢ ÀνºÅϽºÀÇ compleate ¸â¹öº¯¼ö°¡ true ÀΰǸ¸ ã¾Æ¼ ÈÄó¸® ÇØÁּŵµ µË´Ï´Ù. |
0
0
[* ºñȸ¿ø *]
Á¦°¡ ¸»ÇÏ°í½Í¾ú´ø °É °£´ÜÈ÷ Á¤¸®ÇØÁּ̳׿ä.
ºñµ¿±â 󸮸¦ µ¿±â ó¸®ÇÏ´Â ¹æ¹ý! ±×·±µ¥ ¹®Á¦´Â ¿äûó¸®ÇÏ´Â ¸Þ¼Òµå¿Í ÀÀ´äó¸®ÇÏ´Â ¸Þ¼Òµå¸¦ ²À µÑ·Î ±¸ºÐÇØ¾ß µÇ±â¶§¹®¿¡ Call°ú CallbackÀ» ÇÏ´Â ¸Þ¼Òµå°¡ ´Ù¸¨´Ï´Ù. ±×·¡¼ ÀÛ¼ºÇØÁֽŠÄڵ带 Àû¿ëÇϱⰡ ¾î·Æ³×¿ä. ÇϳªÀÇ ¸Þ¼Òµå¸¸ ó¸®ÇÑ´Ù¸é »ç¿ëÇϱ⿡ ÁÁÀº ¹æ¹ýÀÎ °Í °°½À´Ï´Ù. Áö±ÝÀº Application.Doevent()·Î ÇØ°áºÃ½À´Ï´Ù. ½Ã°£³»¾î ´äº¯ÇØ Áּż °¨»çÇÕ´Ï´Ù. |
|
|
¡â ÀÌÀü±Û¡ä ´ÙÀ½±Û | ¸ñ·Ïº¸±â |
ÀÌ °æ¿ì 100% ¼º°øÇؾßÇÏ°ÚÁö¸¸¿ä..
±Û¿¡µµ Àû¾î³õ¾ÒµíÀÌ API¿¡¼ Á¦°øÇÏ´Â ÇÔ¼öµéÀº Áõ±Ç»ç¿¡¼ COMÀ¸·Î ¹Ì¸® ±¸ÇöÇسù±â¶§¹®¿¡ ÁöÁ¤ÇÑ Çü½ÄÀ» µû¶ó¾ß Çϴµ¥¿ä.
¿äû ÇÔ¼ö¿¡ ÀÔ·ÂÇÏ´Â ¸Å°³º¯¼ö °ª Áß¿¡´Â ½Äº°ÄÚµå¿Í ¿¬°üµÈ ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.
Àúµµ °¢ Àü¼ÛÆÐŶ¸¶´Ù °íÀ¯ÇÑ ½Äº°Äڵ带 ºÎ¿©ÇÏ°í ÀÀ´äÆÐŶ¿¡ ÀÖ´Â ½Äº°ÄÚµå¿Í ºñ±³ÇÏ´Â °ÍÀ» »ý°¢Çغ¸±äÇߴµ¥¿ä.
ÀÌ°Ç Á¦°¡ ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ºÎºÐÀÌ ¾Æ´Ï¶ó¼ ¾î¶»°Ô ÇÒ ¼ö°¡ ¾ø³×¿ä.
API°¡ COM ÀÌ¿Ü¿¡µµ DLLµµ Áö¿øÇؼ °³¹ßÀÚ°¡ ¸ðµç 󸮰úÁ¤À» Á÷Á¢ ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï Çسõ±ä Çߴµ¥..
±×·¯¸é ³Ê¹« ¾î·Á¿öÁ®¼ COMÀ» »ç¿ëÇÏ¸é¼ ¾î¶»°Ô ÇØ°áÇÒ ¼ö ¾ø³ª ¹æ¹ýÀ» ã°íÀÖ½À´Ï´Ù. ¤Ð¤Ð