Member 13431104 Ответов: 1

Как сделать этот код как customevents, чтобы получить обратный вызов, возвращающий значения


Дорогой
у меня есть исходный код с помощью функции обратного вызова.Эта функция обратного вызова возвращает различные сообщения о состоянии.если я создал эту функцию обратного вызова кода как DLL, то я не знаю, как вернуть значения этой функции обратного вызова из моей DLL в мое приложение.для меня эта dll не возвращает значения обратного вызова в мое приложение.Можете вы пожалуйста помочь мне.

Есть ли какие-либо способы использовать этот код в качестве пользовательских событий?

Пожалуйста, помогите мне.

Этот код ниже я создал как dll.когда я вызываю функцию TriggerTrx (), она указывает на обратный вызов этого обратного вызова, получая некоторые сообщения о состоянии .мой вопрос заключается в том, когда я делаю этот код как dll.после этого, если я использую эту dll в каком-то другом приложении, как я получу эти сообщения о состоянии, возвращающиеся из функции обратного вызова.

можете вы пожалуйста помочь мне.

Что я уже пробовал:

public class POS_PAYMENT
    {
        public delegate void CallBack(string strParam);
        string strParameter = string.Empty;

 public string CheckExistance(string nPort)
        {
            

            Int32 iRe = -1;
            string sReturnCode = string.Empty;
            string sRetCode = string.Empty;

            iRe = spanInteg.CheckExistance(nPort);

            sRetCode = DispResult(iRe);
            if (sRetCode == "0000")
            {
                sReturnCode = sRetCode;
            }
            else
            {
                sReturnCode = sRetCode;
            }
            return sReturnCode;
        }

 public string DispResult(int iRet)
        {
            string RetCode = string.Empty;
            switch (iRet)
            {
                case (int)ReturnCode.API_FAILED:
                    RetCode = "0105";
                    break;
                case (int)ReturnCode.API_LIBRARY_FAILED:
                    RetCode = "0102";
                    break;
                case (int)ReturnCode.API_NO_RESPONSE:
                    RetCode = "0103";
                    break;
                case (int)ReturnCode.API_PORT_OPEN_FAILED:
                    RetCode = "0104";
                    break;
                case (int)ReturnCode.API_TIMEOUT:
                    RetCode = "0106";
                    break;
                case (int)ReturnCode.API_OK:
                    RetCode = "0000";
                    break;
            }
            return RetCode;
        }   public string TriggerTrx(string sPort, string sTrxtype, string sCardNumber, string sTotalAmt, string sSubNumber)
        {
            Int32 iRet = -1;

            string sReturnCode = string.Empty;

            string sRetCode = string.Empty;

            IntPtr intptr_delegate = Marshal.GetFunctionPointerForDelegate(new CallBack(CallBackFunction));

            iRet = spanInteg.TriggerTrxTrack2WithListenerWithCom(sPort, intptr_delegate, sTrxtype, sCardNumber, sTotalAmt, sSubNumber);
           
            sRetCode = DispResult(iRet);
            if(sRetCode == "0000")
            {
                sReturnCode = sRetCode;
            }
            else
            {
                sReturnCode = sRetCode;
            }
            return sReturnCode;
        }

        void CallBackFunction(string strParam)
        {
           MessageBox.Show(strParam);
        }

1 Ответов

Рейтинг:
2

Maciej Los

Я не совсем понимаю, о чем ты просишь... Я думаю, вы пытаетесь заставить двери широко распахнуться...

Обычно, когда вы создаете dll, вы можете использовать эту dll в других проектах. Все, что вам нужно сделать, это добавить ссылку на эту библиотеку dll, после чего вы сможете создавать объекты:

using namespaceFromYourDll;

void Main()
{
    POS_PAYMENT pp = new POS_PAYMENT();
    string retCode = pp.CheckExistance("8080");
    MessageBox.Show(retCode);
}