事件不称为C#
我目前正在制作一个NFC库,当一张卡被成功读取时,我需要在其中引发一个事件 在我的主要项目中,我这样称呼库:事件不称为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
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。。。就这样。好吧,我想是喝咖啡休息的时间了^^^是的!打字错误时有发生,很容易被忽视。