在lua中用事件有2中方式:
1.用c#定義好的事件系統,在lua層呼叫,我也寫過一
2.在lua層定義事件系統,**如下
eventsystem={}
--新增事件 eventtype-->事件型別 func-->方法
function
eventsystem.addlistener(eventtype,func)
if(eventtype==nil or func==nil)then
log('在eventsystem.addlistener中eventtype或func為空')
return
end if(eventsystem[eventtype]==nil)then
local
a={}
table.insert(a,func)
eventsystem[eventtype]=a
else
table.insert(eventsystem[eventtype],func)
endend--移除事件
function
eventsystem.removelistener(eventtype,func)
if(eventtype==nil or func==nil)then
log('在eventsystem.removelistener中eventtype或func為空')
return
end local
a=eventsystem[eventtype]
if(a~=nil)then
for k,v in pairs(a) do
if(v==func)then
a[k]=nil
endend
endend--派發事件
function
eventsystem.sendevent(eventtype,...)
if(eventtype~=nil)then
local
a=eventsystem[eventtype]
if(a~=nil)then
for k,v in pairs(a) do
v(...)
endend
endendreturn eventsystem
一定要注意事件有監聽就必須要有移除監聽 mysql中使用事件和儲存過程進行定時業務的執行
因公司專案中有個贈送優惠券功能,此功能需求為 贈送出去的優惠券若24小時內沒有被領取,則自動設定為贈送失敗 過期未被領取 優惠券自動退換給贈送者。初步想法是 在mysql中建立儲存過程進行業務邏輯判斷以及操作庫,然後使用事件定時的調取儲存過程,即可完成需求。一 建立事件 1.事件簡單描述就是可以定時...
mysql儲存過程中使用事件
create definer root localhost procedure createbusiness parameter1 int begin routine body goes here.declare flag int default parameter1 宣告變數flag,將引數值賦給...
C 中使用事件只啟動乙個例項
現有乙個程式,只能啟動乙個例項 啟動時,如果檢測到例項已啟動,則啟用並顯示到最前端 否則啟動乙個新的例項 為此可以通過事件實現。判斷是否已啟動 bool isformexists form frmowner string strevent catch waithandlecannotbeopened...