小编Rob*_*vey的帖子

C#中的System.Threading.Timer似乎无法正常工作.它每3秒运行一次非常快

我有一个计时器对象.我想让它每分钟都运行一次.具体来说,它应该运行一个OnCallBack方法,并在OnCallBack方法运行时变为非活动状态.一旦OnCallBack方法完成,它(a OnCallBack)重新启动计时器.

这就是我现在所拥有的:

private static Timer timer;

private static void Main()
{
    timer = new Timer(_ => OnCallBack(), null, 0, 1000 * 10); //every 10 seconds
    Console.ReadLine();
}

private static void OnCallBack()
{
    timer.Change(Timeout.Infinite, Timeout.Infinite); //stops the timer
    Thread.Sleep(3000); //doing some long operation
    timer.Change(0, 1000 * 10);  //restarts the timer
}
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有用.它每3秒运行一次非常快.即使提高了一段时间(1000*10).它似乎对此视而不见1000 * 10

我做错了什么?

.net c# timer

109
推荐指数
3
解决办法
15万
查看次数

为什么C#接口方法没有声明为抽象或虚拟?

接口中的C#方法在不使用virtual关键字的情况下声明,并在派生类中重写而不使用override关键字.

是否有一个原因?我认为它只是一种语言方便,显然CLR知道如何处理这个问题(默认情况下方法不是虚拟的),但还有其他技术原因吗?

以下是派生类生成的IL:

class Example : IDisposable {
    public void Dispose() { }
}

.method public hidebysig newslot virtual final 
        instance void  Dispose() cil managed
{
  // Code size       2 (0x2)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ret
} // end of method Example::Dispose
Run Code Online (Sandbox Code Playgroud)

请注意,该方法virtual final在IL中声明.

c# methods virtual-functions interface abstract

106
推荐指数
3
解决办法
7万
查看次数

如何从字符串中间执行对文化敏感的"启动"操作?

我有一个相对模糊的要求,但感觉应该可以使用BCL.

对于上下文,我正在Noda Time中解析日期/时间字符串.我为输入字符串中的位置维护一个逻辑光标.因此,虽然完整的字符串可能是"2013年1月3日",但逻辑光标可能位于"J".

现在,我需要解析月份名称,将其与文化的所有已知月份名称进行比较:

  • 文化敏感
  • 不区分大小写
  • 只是从光标的角度来看(不是更晚;我想看看光标是否"看着"候选月份名称)
  • 很快
  • ......之后我需要知道使用了多少个字符

当前的代码做这个工作通常使用CompareInfo.Compare.它实际上是这样的(仅用于匹配部分 - 在真实的东西中有更多的代码,但它与匹配无关):

internal bool MatchCaseInsensitive(string candidate, CompareInfo compareInfo)
{
    return compareInfo.Compare(text, position, candidate.Length,
                               candidate, 0, candidate.Length, 
                               CompareOptions.IgnoreCase) == 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,这取决于候选人和我们比较的区域长度相同.大部分时间都很好,但在某些特殊情况下并不好.假设我们有类似的东西:

// U+00E9 is a single code point for e-acute
var text = "x b\u00e9d y";
int position = 2;
// e followed by U+0301 still means e-acute, but from two code points
var candidate = "be\u0301d";
Run Code Online (Sandbox Code Playgroud)

现在我的比较会失败.我可以用IsPrefix: …

.net string unicode

105
推荐指数
3
解决办法
5856
查看次数

生成模拟数据的工具?

我正在寻找一个好的免费工具的建议,用于生成样本数据以便加载到测试数据库中.通过类比,可以为任何RDBMS 生成" lorem ipsum "文本.我正在寻找的功能包括:

  • 灵活地为现有表定义生成数据.
  • 能够生成小型和大型数据集(> 100万行或更多).
  • 以SQL脚本格式(INSERT语句)生成,或者以适合批量导入的平面文件格式生成(通常更快).
  • 用于轻松编写脚本的命令行界面.
  • 可扩展的开源,用动态语言编写(这些是很好的,不是很强的要求).

PS:我确实在StackOverflow上搜索了一个重复的问题,但我没找到.如果有的话,我会很高兴得到一个指针.


感谢大家的响应!我应该修改我的要求,即我使用Mac OS X作为我的主要开发环境,而不是Windows(虽然我确实说命令行界面是可取的,而且实际上排除了Windows).不过,特定于Windows的建议无疑会对这个问题的其他读者有用,所以,谢谢.


这是我的结论:

  • GenerateData:
    • PHP Web应用程序界面,而不是命令行
    • 仅限于生成200条记录(或支付20美元用于生成5,000条记录的许可)
  • RedGate SQL数据生成器
    • 不免费,价格295美元
    • 需要Windows,.NET,SQL Server
  • Visual Studio 2008数据库版
    • 需要Windows
    • 需要昂贵的MSDN或ISV订阅
  • Banner Datadect
    • 不是免费的,价格595美元
    • 需要Windows(?)
    • 不支持MySQL(?)
    • GUI,不是命令行或脚本
  • Ruby Faker宝石
    • 使用ActiveRecord进行批量数据加载的速度太慢了
  • 超级Smack
    • 主要是负载测试工具,内置随机数据生成器
    • 但是很简单
    • 总体而言,这是一个很好的亚军工具
  • Databene Benerator
    • 满足我需求的最佳解决方案
    • XML脚本,与DbUnit兼容
    • 开源(GPL)Java代码
    • 命令行用法
    • 通过JDBC直接访问许多数据库

testing data-generation

104
推荐指数
4
解决办法
9万
查看次数

Modulus Divison如何运作

我真的不明白模数除法是如何工作的.我正在计算27 % 16和结束11,我不明白为什么.

我似乎无法在网上找到外行人的解释.有人可以详细说明这里发生了什么吗?

language-agnostic math division modulo

97
推荐指数
8
解决办法
29万
查看次数

列出目录+子目录中的所有文件和目录

我想列出该目录的目录和子目录中包含的每个文件和目录.如果我选择C:\作为目录,程序将获得它有权访问的硬盘驱动器上的每个文件和文件夹的每个名称.

列表可能看起来像

fd\1.txt
fd\2.txt
fd\a\
fd\b\
fd\a\1.txt
fd\a\2.txt
fd\a\a\
fd\a\b\
fd\b\1.txt
fd\b\2.txt
fd\b\a
fd\b\b
fd\a\a\1.txt
fd\a\a\a\
fd\a\b\1.txt
fd\a\b\a
fd\b\a\1.txt
fd\b\a\a\
fd\b\b\1.txt
fd\b\b\a

c# directory getdirectories subdirectory

92
推荐指数
4
解决办法
18万
查看次数

用于移动safari的html5网络应用程序,用于从Photos.app上传图像?

是否可以编写专为iOS设备(iPad,iPhone,iPod Touch)设计的HTML5 Web应用程序,它允许用户从文件系统上传图像?

想象一下,通过网络应用程序将新照片上传到您的Twitter头像.

iphone html5 file-upload mobile-safari ios

91
推荐指数
5
解决办法
10万
查看次数

是否有一个"String.Format"可以接受命名输入参数而不是索引占位符?

这就是我所知道的

str = String.Format("Her name is {0} and she's {1} years old", "Lisa", "10");
Run Code Online (Sandbox Code Playgroud)

但我想要类似的东西

str = String("Her name is @name and she's @age years old");
str.addParameter(@name, "Lisa");
str.addParameter(@age, 10);
Run Code Online (Sandbox Code Playgroud)

.net c# string string-formatting

88
推荐指数
7
解决办法
3万
查看次数

使用Linq to Entities'包含()'解决方法?

我正在尝试使用Silverlight ADO.Net数据服务客户端api(以及Linq To Entities)创建一个使用where子句中的id列表的查询.有没有人知道Contains不受支持的解决方法?

我想做这样的事情:

List<long?> txnIds = new List<long?>();
// Fill list 

var q = from t in svc.OpenTransaction
        where txnIds.Contains(t.OpenTransactionId)
        select t;
Run Code Online (Sandbox Code Playgroud)

试过这个:

var q = from t in svc.OpenTransaction
where txnIds.Any<long>(tt => tt == t.OpenTransactionId)
select t;
Run Code Online (Sandbox Code Playgroud)

但得到"方法'任何'不受支持".

c# linq linq-to-entities entity-framework .net-3.5

85
推荐指数
3
解决办法
8万
查看次数

在Xcode中更改默认标题注释许可证

每当我在Xcode中创建一个新的.cpp/.h文件时,评论就会添加到文件的顶部.例如:

/*
 *  <file>.cpp
 *  <Name of project>
 *
 *  Created by <My name> on <Date>.
 *  Copyright <Year and company>. All rights reserved.
 *
 */
Run Code Online (Sandbox Code Playgroud)

我想将默认注释更改为另一个许可证,如GPL/LGPL /或其他.有什么地方我可以在Xcode中改变这种行为吗?

xcode

85
推荐指数
9
解决办法
4万
查看次数