小编pro*_*ach的帖子

c#单线程计时器

我想要一个具有以下属性的计时器:

  1. 无论启动多少次调用,只有一个回调线程正在运行

  2. 关于间隔,忽略了在回调函数中花费的时间.例如,如果间隔为100毫秒并且回调需要4000毫秒才能执行,则回调将在100毫秒,4100毫秒等时调用.

我看不到任何可用的内容,所以写了下面的代码.有一个更好的方法吗?

/**
 * Will ensure that only one thread is ever in the callback
 */
public class SingleThreadedTimer : Timer
{
    protected static readonly object InstanceLock = new object();

    //used to check whether timer has been disposed while in call back
    protected bool running = false;

    virtual new public void Start()
    {
        lock (InstanceLock)
        {
            this.AutoReset = false;
            this.Elapsed -= new ElapsedEventHandler(SingleThreadedTimer_Elapsed);
            this.Elapsed += new ElapsedEventHandler(SingleThreadedTimer_Elapsed);
            this.running = true;
            base.Start();
        }

    }

    virtual public void SingleThreadedTimer_Elapsed(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# multithreading timer

6
推荐指数
2
解决办法
6639
查看次数

代码签名证书是否有助于病毒扫描程序的误报

我们在c#中有一段代码,它在AVG的启发式行为检测下被识别为病毒.我们一直与他们联系,以找出原因,但他们没有回应.目前我们所有的dll和exe都是用我们生成的证书签署的(不会在受信任的商店中)是否有人知道我们是否购买了代码签名证书是否有助于解决误报?

c# windows antivirus virus code-signing

6
推荐指数
1
解决办法
2061
查看次数

c#如果一个或两个大于0,则最少两个数字

我正在寻找的逻辑是,如果其中一个数字> = 0(它们不一定是),那么返回两个中的最小值也大于0.我为它编写的代码是如此丑陋,我很惭愧发布它!

编辑:样品1,-1 => 15,6 => 5 -1,-1 => 0

(如果两者都小于0,则返回0)

c#

6
推荐指数
3
解决办法
1万
查看次数

在c#中实现IDispatch

我正在编写一些测试代码来模拟非托管代码,调用后期绑定COM对象的c#实现.我有一个声明为IDispatch类型的接口,如下所示.

 [Guid("2D570F11-4BD8-40e7-BF14-38772063AAF0")]
 [InterfaceType(ComInterfaceType.InterfaceIsDual)]
 public interface TestInterface
 {
     int Test();
 }

 [ClassInterface(ClassInterfaceType.AutoDual)]
 public class TestImpl : TestInterface 
 {
 ...
 }
Run Code Online (Sandbox Code Playgroud)

当我使用下面的代码调用IDispatch的GetIDsOfNames函数时

  ..
  //code provided by Hans Passant
  Object so = Activator.CreateInstance(Type.GetTypeFromProgID("ProgID.Test"));
  string[] rgsNames = new string[1];
  int[] rgDispId = new int[1];
  rgsNames[0] = "Test";

  //the next line throws an exception
  IDispatch disp = (IDispatch)so;
Run Code Online (Sandbox Code Playgroud)

IDispatch定义为:

 //code provided by Hans Passant
 [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("00020400-0000-0000-C000-000000000046")]
 private interface IDispatch {
     int GetTypeInfoCount();
     [return: MarshalAs(UnmanagedType.Interface)]
     ITypeInfo GetTypeInfo([In, MarshalAs(UnmanagedType.U4)] int iTInfo, [In, MarshalAs(UnmanagedType.U4)] int …
Run Code Online (Sandbox Code Playgroud)

c# com idispatch

6
推荐指数
1
解决办法
7220
查看次数

检查Windows安装程序互斥可用性

在我的一个集成测试中,我有两个线程卸载然后安装程序,但是当按顺序运行时会产生错误 Failed to grab execution mutex. System error 258.

为了解决这个问题,我必须在卸载后睡觉.我试着检查msiexec进程是否正在运行但是一直有2-3个因此它不是一个好的指标.有没有办法检查msiexec执行互斥锁是否可用?

c# windows-installer

6
推荐指数
1
解决办法
4623
查看次数

停止ruby http请求修改标题名称

我在ruby中做一个http请求:

  http = Net::HTTP.new(uri.host, uri.port)
  req = Net::HTTP::Post.new(uri.path)
  req.body = payload
  req['customeheader'] = 'xxxxxxxxx'
  http.set_debug_output $stdout
Run Code Online (Sandbox Code Playgroud)

我打开了调试,当请求发布时,我可以看到标题被发布为:

  Customheader: xxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

反正有没有阻止这个,我发布的第三方服务器发出错误,因为标题名称不正确 - 它正在期待 customheader:

ruby http

6
推荐指数
3
解决办法
1973
查看次数

谷歌应用程序引擎数据存储标签云与python

我们的应用引擎数据存储区中有一些非结构化的文本数据.我想在数据存储区对象的子集上创建一个属性的"一次性"标记云.环顾四周之后,我看不到任何框架可以让我在没有自己写的情况下做到这一点.

我的想法是:

  • 写一个map(如map reduce)函数来遍历数据存储区中特定类型的每个对象,
  • 将文本字符串拆分为单词
  • 对于每个单词增加一个计数器
  • 使用最终计数通过一些第三方软件生成标签云(离线 - 欢迎提出任何建议)

因为我之前从未这样做过,所以如果首先有一些框架可以帮助我(请),如果不是我以正确的方式接近它,我就会徘徊.即请随意指出计划中的漏洞.

python google-app-engine tag-cloud

5
推荐指数
1
解决办法
1268
查看次数

使用多个替代错误的antlr匹配输入

当antlr v3.1编译此规则时,我收到警告

 sentence
:
(CAPITAL_LETTERS_AND_NUMBERS | INT | ANY_WORD ) 
(
    INT
| CAPITAL_LETTERS_AND_NUMBERS
| ANY_WORD 
)*;
Run Code Online (Sandbox Code Playgroud)

警告是:

 5:2: Decision can match input such as "CAPITAL_LETTERS_AND_NUMBERS" using multiple alternatives: 1, 2
 As a result, alternative(s) 2 were disabled for that input
 Semantic predicates were present but were hidden by actions.
 Decision can match input such as "INT" using multiple alternatives: 1, 2
 As a result, alternative(s) 2 were disabled for that input
 Semantic predicates were present but were hidden by …
Run Code Online (Sandbox Code Playgroud)

antlr antlr3

5
推荐指数
1
解决办法
2455
查看次数

从C#调用IDispatch COM接口的成员

我想从COM对象调用GetIdsOfNames函数,该对象在c#中实现IDispatch接口.我编写了以下代码,但它失败了DISP_E_UNKNOWNNAME.这是正确的做法吗?

 Object so = Activator.CreateInstance(Type.GetTypeFromProgID("ProgID"));            
 Object[] args = new Object[5];
 string[] rgsNames = new string[1];
 rgsNames[0] = "PrintNormal";
 uint LOCALE_SYSTEM_DEFAULT = 0x0800;
 uint lcid = LOCALE_SYSTEM_DEFAULT;
 int cNames = 1;
 int[] rgDispId = new int[1];
 args[0] = IntPtr.Zero;
 args[1] = rgsNames;
 args[2] = cNames;
 args[3] = lcid;
 args[4] = rgDispId;             
 Object result = so.GetType().InvokeMember("GetIDsOfNames", BindingFlags.InvokeMethod, null, so, args);
Run Code Online (Sandbox Code Playgroud)

谢谢,

理查德

c# com

5
推荐指数
2
解决办法
1万
查看次数

python用实例方法覆盖类方法

我在代码中遇到一个错误,该错误隐藏了重写方法,因为我忘记了@classmethod装饰器。我在徘徊是否可以强制采用另一种方式(注意这可能是不良的设计),但类似于:

 class Super:

   @classmethod
   def do_something(cls):
     ...

class Child:
  def do_something(self):
    ...

obj = Child()
obj.do_something() #calls the child
Child.do_something() #calls the Super method
Run Code Online (Sandbox Code Playgroud)

编辑:目前尚无具体案例,但我正在徘徊,如果可以假设可以做到。

python inheritance

5
推荐指数
1
解决办法
2668
查看次数