Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
事件不称为C#_C#_Lambda_Event Handling - Fatal编程技术网

事件不称为C#

事件不称为C#,c#,lambda,event-handling,C#,Lambda,Event Handling,我目前正在制作一个NFC库,当一张卡被成功读取时,我需要在其中引发一个事件 在我的主要项目中,我这样称呼库: reader = new NfcReader(); if (reader.Initialize()) { reader.UidReceived += (s, args) => DisplayText(String.Format("UID received: {0}", args.Uid)); } 我的图书馆: pu

我目前正在制作一个NFC库,当一张卡被成功读取时,我需要在其中引发一个事件

在我的主要项目中,我这样称呼库:

reader = new NfcReader();
    if (reader.Initialize())
    {
        reader.UidReceived += (s, args) => 
            DisplayText(String.Format("UID received: {0}", args.Uid));
    }
我的图书馆:

public class NfcReader
{
    private SCardMonitor monitor;
    public event EventHandler<NfcReaderEventArgs> UidReceived;

    public bool Initialize()
    {
        // When a card is inserted, an event is raised
        // then I want to read the Uid of the card 
        monitor = new SCardMonitor(new SCardContext(), SCardScope.System);
        monitor.CardInserted += (s,a) => GetUid(a.ReaderName);
        return true;
    }

    private void GetUid(string readerName)
    {
        string uid = MyUidGetter(readerName);
        OnUidReceived(uid);
    }

    private void OnUidReceived(string uid)
    {
        var handler = UidReceived;
        if (handler == null)
        {
            handler(this, new NfcReaderEventArgs(uid));
        }
    }
}
公共类NfcReader
{
私人SCardMonitor监视器;
接收到的公共事件事件处理程序;
公共bool初始化()
{
//插入卡时,会引发一个事件
//然后我想读取卡的Uid
监视器=新的SCardMonitor(新的SCardContext(),SCardScope.System);
monitor.CardInserted+=(s,a)=>GetUid(a.ReaderName);
返回true;
}
私有void GetUid(字符串读取器名称)
{
字符串uid=MyUidGetter(readerName);
ONUID接收(uid);
}
私有void onuid已接收(字符串uid)
{
var handler=UidReceived;
if(handler==null)
{
处理程序(这是新的NfcReaderEventArgs(uid));
}
}
}

调试器逐步执行
处理程序(这是新的NfcReaderEventArgs(uid))
,但未调用
DisplayText
方法。有什么想法吗?

我想这是一个拼写错误,您检查handler是否为null?;)

也许您的初始化确实返回false。调试器会逐步执行,因为它不会调用任何东西。这是由国际单项体育联合会确定的


我建议您使用handler!=改为null,并确保Initialize返回true。

handler==null
显然是一个错误(输入错误)。oops。。。就这样。好吧,我想是喝咖啡休息的时间了^^^是的!打字错误时有发生,很容易被忽视。