Microsoft MVP성태의 닷넷 이야기
event 사용 시 두 표현의 차이점이 있을까요? [링크 복사], [링크+제목 복사],
조회: 3339
글쓴 사람
랄랄라
홈페이지
첨부 파일
 

- 아래는 server의 session.cs 코드입니다.
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace ServerCore
{
    class Session
    {
        Socket _socket;
        int _disconnected = 0;
        public void Start(Socket socket)
        {
            _socket = socket;

            SocketAsyncEventArgs recvArgs = new SocketAsyncEventArgs();
            recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted);
            //userTocken으로 추가적인 정보를 아무거나넘겨줄 수 있다(object를 받기 때문)
            recvArgs.SetBuffer(new byte[1024],0,1024);
            RegisterRecv(recvArgs);
        }

        public void Send(byte[] sendBuff)
        {
            _socket.Send(sendBuff);
        }

        public void Disconnect()
        {
            if(Interlocked.Exchange(ref _disconnected, 1) == 1)
            {
                return;
            }
            _socket.Shutdown(SocketShutdown.Both);
            //쫓아낸다
            _socket.Close();
        }



        #region 네트워크 통신
        void RegisterRecv(SocketAsyncEventArgs args)
        {
            args.AcceptSocket = null;

            bool pending = _socket.ReceiveAsync(args);

            //바로 성공했으면
            if(pending == false)
            {
                OnRecvCompleted(null, args);
            }
        }


        
        void OnRecvCompleted(object obj, SocketAsyncEventArgs args)
        {

            //BytesTransferred == 몇바이트 받았는지
            if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success)
            {

                try
                {
                    string recvData = Encoding.UTF8.GetString(args.Buffer, args.Offset, args.BytesTransferred);
                    Console.WriteLine($"[from client] : {recvData}");
                    RegisterRecv(args);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"onrecvcompleted failed {e}");
                }



            }
            else
            {
                Disconnect();
            }

        }
        #endregion


    }
}





여기서,
recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted);

recvArgs.Completed += OnRecvCompleted;
로 바꾸어도 아무런 차이점이 없는 것 맞을까요?
내부적으로 돌아가는게 다르다던가, 아니면 new를 써서 뭔가 메모리적으로나 컴파일러가 일 할때 달라진다거나.. 그런게 있을까요?









[최초 등록일: ]
[최종 수정일: 3/1/2023]


비밀번호

댓글 작성자
 



2023-03-01 01시33분
차이점이 없습니다. 후자로 해도 결국 전자와 같은 코드로 바뀌어 컴파일됩니다.
정성태

... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
589김희택3/2/20078937리소스 추가 방법에 대한 아티클을 보던중에 질문요... [1]파일 다운로드1
588이성진2/24/200711060웹 -> 스마트클라이언트 -> 웹서비스 의 세션 공유 방법 ? [1]
583김영민2/22/20079526Vista에서 "관리자 권한으로 실행"을 통해 실행한 프로세스의 동작
584정성태2/22/200710926    답변글 [답변]: Vista에서 "관리자 권한으로 실행"을 통해 실행한 프로세스의 동작
582한귀순2/22/20079603sqlhelper 의 updatedataset
585정성태2/23/20078895    답변글 [답변]: sqlhelper 의 updatedataset [1]
579futu...2/16/200710375VS2005의 스마트 클라이언트에서 웹브라우저 예제 질문입니다. [1]
578정해봉2/16/20079603IE Embeded Assambly 방식에서 CAS 설정 방법 [1]
575박성민2/12/200710119COM에 데이터 보내기 질문입니다. [1]
571엔틱스2/7/200710810그냥... 질문은 아닙니다만... [2]
5682/6/20078239이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요?파일 다운로드1
569정성태2/6/20079391    답변글 [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요? [1]
570정성태2/6/20079509        답변글 [답변]: [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요?
5732/8/20078425            답변글 [답변]: [답변]: [답변]: 이런 오류 화면을 어떻게 찾아봐야 - 알아봐야 - 하는지요? [1]파일 다운로드1
565한귀순2/5/20079055typed dataset 의 유용성
566정성태2/6/200710666    답변글 [답변]: typed dataset의 유용성 [1]
564정민영2/5/20079220혹시 이런 경우 보신적 있으신가 궁금합니다..^^; [2]
563창민이2/2/20079357Visual C++ COM Objects Returning Recordsets 사용에 대해.. [3]
562현석1/29/20079221C# 스마트응용장치에서 아이콘 움직이게하는거 질문요 ^^ [1]파일 다운로드1
559초보1/27/200710586급 질문 입니다. visual studio 자동 종료에 대한 질문입니다. [2]
558즈믄1/26/200710543.Net Framework v2.0에서 Winform의 Panel에 Excel파일 보여주기 [2]
556정재우1/26/200710288vista에서 smartclient의 System.Security.PermissionsRegistryPermission 에러 [1]
555dev....1/25/2007119922005 WebBrowser내에서 팝업 처리 문제 관련 질문입니다.
561정성태1/29/200714863    답변글 [답변]: 2005 WebBrowser 내에서 팝업 처리 문제 관련 질문입니다.
554sky1/23/200710222<급질문> interop 를 사용함에 있어 [2]
557sky1/26/20078593    답변글 [답변]: <급질문> interop 를 사용함에 있어
... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...