 
	
					
				 
	
					
				 
	
					
				 
	
					
				 
	
					
				使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数. 
我碰到的问题: 
   1.配置trigger: 
   Name: CimDll 
   Event: Create PIV 
   Time:  POST 
   RequireNO 
   DLL:Cim.dll 
   Function:PDMTPIVCreatePostOperation 
    
  2.源代码: 
   int PDMDLLInit() 
{ 
   PTCERROR pdm_status; 
   FILE      *g_pfileLog; 
   g_pfileLog =fopen("test.dat","w"); 
   setbuf(g_pfileLog,NULL); 
   fprintf(g_pfileLog,"begin test\n"); 
   pdm_status = PDMTriggerRegister("PDMTPIVCreatePostOperation", PDMTPIVCreatePostOperation); 
   if (pdm_status != PDM_SUCCESS) 
   {   
    printf("Failed to Register Trigger PIV Create Post.\n"); 
   } 
    return (pdm_status); 
} 
int PDMTPIVCreatePostOperation(int argc, void **argv) 
{ 
   fprintf(g_pfileLog,"test\n"); 
   ..... 
   fprintf(g_pfileLog,"end test\n"); 
   fclose(g_pfileLog); 
}
   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效. 
   原因:我们使用trigger触发时,真正起作用的是函数:PDMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.