首页 > 代码库 > C++\CLI使用.net委托,*Callback注意"this"
C++\CLI使用.net委托,*Callback注意"this"
今天在使用c++\cli的时候遇到了点关于委托,callback使用的问题,简单记录一下
首先贴段简单的C#中使用System.Threading.Timer的代码.
Timer GameTimer=new Timer(new TimerCallback(this.OnGameTimer),null,0,500);
以上定时器会每隔500毫秒去调用OnGameTimer方法,OnGameTimer方法的定义如下:
void OnGameTimer(object obj){...}
基于以上代码,结合C#的使用方法,我们来写出C++\CLI的使用代码.
Timer^ GameTimer=gcnew Timer(gcnew TimerCallback(this->OnGameTimer),NULL,500);
void OnGameTimer(Object^ obj){...}
很好,vs并没有提示什么语法错误,那么编译的结果呢?
好吧,一番搜索,msdn示例代码 链接如下:
题外话:
最近着手在重写一个很古老的游戏服务端,目前已使用C#按照原来的c++代码重写完了GateServer,LoginServer,RoleServer,GuildServer,但是GameServer选择使用C++\CLI进行重构.这份代码估计出生在1998年左右,没有使用任何设计模式,就连很多大量相同的代码都没有进行简单的封装,GameServer中的主要逻辑都写在game.cpp中,这个cpp足足有2M多,7-8w行代码揉在一起.如果GameServer也使用C#重写的话,那就无法预知工作量了.好在CLI的存在,让这份庞大杂乱的c++代码没花多少功夫就被.net化了,经测试运行进游戏一切正常. 剩下把它那稀烂的网络通信用我C#写的XKSocket替换掉,那一切就不在是问题了! XKSocket git地址: http://git.oschina.net/dreamzgj/XKSocket
C++\CLI使用.net委托,*Callback注意"this"