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

- 아래는 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)
431혁이7/19/200612205UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ파일 다운로드1
432정성태7/19/200612587    답변글 [답변]: UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ
433혁이7/20/200613444        답변글 [답변]: [답변]: UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ
434정성태7/20/200614186            답변글 [답변]: [답변]: [답변]: UpdatePanel(Atlas) 위의 SmartClient가 이벤트 후 사라집니다. ㅜㅜ [1]
429kwt7/12/200613472ActiveX 개발을 배우고 싶은데요 [3]
427이홍자7/11/200613783스마트 클라이언트 실행 시 그리드의 체크박스가 안보여요.. [1]
426정보문7/11/200614324액티브X 설치2 [1]
423이방은7/9/200613140리소스 임베디드 질문요.. [1]파일 다운로드1
422guest7/6/200612753COM+에서 풀링을 사용할 경우... [1]파일 다운로드1
424guest7/10/200613637    답변글 소스 코드 입니다. [1]
425guest7/11/200613008        답변글 다시 올립니다.파일 다운로드1
428정성태7/11/200612851            답변글 [답변]: 다시 올립니다.
421정보문7/6/200613431액티브X 설치 [1]
1354허재호11/12/201414053    답변글 [답변]: 액티브X 설치
418임대진7/4/200612622이럴적 있으세요?
419정성태7/4/200612768    답변글 [답변]: 이럴적 있으세요?
417이방은6/29/200612540[질문]2.0에서 웹리소스에 대해서 [2]
416박영일6/29/200612773CAS 설정여부 [1]
415김인학6/28/200613324스마트 클라이언트에서 웹서비스를 호출하고 있습니다. [1]
413김성호6/28/200612956IE프로그램문제... [2]
411이진형6/27/200613186어셈블리 네임 알아내기 [2]
414정성태6/28/200612361    답변글 [답변]: 어셈블리 네임 알아내기
410이재원6/26/200612554자바스크립트 스마트클라이언트 이벤트 호출 [3]
412이재원6/27/200612651    답변글 [답변]: 자바스크립트 스마트클라이언트 이벤트 호출
409정준명6/22/200613650윈폼 기반 스마트클라이언트 속도 문제에 대해서 의견을 구합니다. [2]
406이진형6/21/200613833처음에 스마트클라이언트 로딩하는 속도 [1]
... 76  77  78  79  80  81  [82]  83  84  85  86  87  88  89  90  ...