如何让一个方法不重复被执行

问题描述

需求:privatevoidStartRead()//多个线程会调用此方法{A.Reset(_stuNo);//如果第一次_stuNo=1,进来,没被调用,则调用//第二次,如果_stuNo=1,发现之前已经被调用过,则不执行A.Reset(_stuNo);}[DllImport("AA.dll",EntryPoint="StartRead",CallingConvention=CallingConvention.StdCall)]publicstaticexternshortStartRead(string_stuNo.);

请问以上需求,怎么做?

解决方案

解决方案二:
privatevoidStartRead(){lock(this){if(_stuNo==1)return;_stuNo==1;}//你的代码}
解决方案三:
我的意思是,A.Reset(1);这个方法,如果A线程调用,发现B线程已经调用过了,则A将不能调用
解决方案四:
再加个变量呗,还能有什么方法object_lock=newobject();bool_b=false;privatevoidStartRead()//多个线程会调用此方法{lock(_lock){if(_stuNo==1&&!_b){_b=true;A.Reset(_stuNo);}}}[DllImport("AA.dll",EntryPoint="StartRead",CallingConvention=CallingConvention.StdCall)]publicstaticexternshortStartRead(string_stuNo.);

解决方案五:
如果C线程调用呢?1L的意思就是做个全局变量,用于标志只能执行一次

时间: 2024-09-20 15:46:00

如何让一个方法不重复被执行的相关文章

service-创建一个服务,重复执行某个方法

问题描述 创建一个服务,重复执行某个方法 我创建了一个服务器,每5分钟运行一次.但是当程序执行到while(true),就会报错.我估计这是不允许的.有什么更好的方法能重复执行某一个方法呢? public class repService extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } while(true){

回调函数-小弟做了一个方法,执行完毕还会再进入方法一次,求指教下原因

问题描述 小弟做了一个方法,执行完毕还会再进入方法一次,求指教下原因 小弟把代码贴到了下面,我要迭代的替换字符串中的内容,替换完毕后,方法执行到 return sb.toString(); 应该是结束了,可是我的代码在运行的时候执行了return sb.toString(); 以后又进来执行一次,分析不出来原因,还请大家赐教,不胜感激: private String parseToCk(String str) { String s1 = str.trim(); /** s1截取字符串开始部分*/

junit 如何测试一个方法中的每行代码是否都被执行过?

问题描述 junit 如何测试一个方法中的每行代码是否都被执行过? 如题 测试一个方法中的每行代码是否都被执行过?是否有多余的代码? 解决方案 要知道一个代码块里面的代码是否被执行过,其实可以在该代码块最后加个输出语句即可,如果输出语句有执行,那么 前面的代码必然有执行. 但执行效果不一定是你的预期效果罢了(因为代码不一定是符合你的设计需求的) 解决方案二: 是否有多余的代码? 这个应该有代码校验工具. 解决方案三: 你这说的是白盒测试中的覆盖率测试,如果代码中有分支语句,需要编写多个测试用例才

怎么在aspx前台页面执行后台的的一个方法 如果是用ajax 那该怎么使用?

问题描述 怎么在aspx前台页面执行后台的的一个方法 如果是用ajax 那该怎么使用? 怎么在aspx前台页面执行后台的的一个方法 如果是用ajax 那该怎么使用? 控件的话我用的是客户端控件 我需要在前端点一个按钮 简单的执行一下后台方法就行了 前台页面Main.aspx 后台Main.aspx.cs 前台按钮ID=a 解决方案 <input type="button" value="callServer" onclick="callServer(

timer-客户端调用2个方法,其中一个是TIMER,同时执行TIMER客户端方法都不能触发了。

问题描述 客户端调用2个方法,其中一个是TIMER,同时执行TIMER客户端方法都不能触发了. 2个都是数据库操作, 一个是对大量单据的一个操作可能比较费时根据客户选择决定执行时间, 一个是对未执行的单据进行查询还有多少条. 单个执行的时候一切正常,都能够正常执行,但是现在问题是一起执行的话,TIMER的方法就不执行了.(大数据还没有返回执行结果) 求解.. 解决方案 timer是不是超时了,当消息处理不过来时,定时器消息会自动丢掉

c# net-C# (急急急)执行一个方法的时候变量值为什么会改变呢?

问题描述 C# (急急急)执行一个方法的时候变量值为什么会改变呢? namespace Test { public partial class Form2 : Form { M_Model TModel = new M_Model(); public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { TModel.Num = 5; DoWork DW = new

c# com控件-C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况

问题描述 C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况 最近开发时使用到一个第3方提供的ocx控件.其中ocx控件中有一个A方法,以及一个A方法的事件(通过事件中的参数来判断A方法的执行情况) 我的问题是:我写了一个B方法,在B方法中调用了A方法,并要在B方法中等待A事件的执行并判断其执行情况.但是我在B方法中等待A事件超时后才会执行A的事件,即只有退出B方法后A的事件才会执行.求各位大神帮帮忙.小弟入行不久,不知道如何处理.附上代码 后来我在B方法中通过线程去执行

link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?

问题描述 link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个? link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个? 解决方案 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflecti

python统计一个文本中重复行数的方法_python

本文实例讲述了python统计一个文本中重复行数的方法.分享给大家供大家参考.具体实现方法如下: 比如有下面一个文件 2 3 1 2 我们期望得到 2,2 3,1 1,1 解决问题的思路: 出现的文本作为key, 出现的数目作为value,然后按照value排除后输出 最好按照value从大到小输出出来,可以参照: 复制代码 代码如下: in recent Python 2.7, we have new OrderedDict type, which remembers the order in