我有一个线程,轮询一个文件夹的新文件.问题是它看到了一个新文件,并且在文件被另一个进程完全复制之前就开始处理它.因此,轮询器获取另一个进程错误所使用的文件.
有没有办法检查文件是免费使用还是得到通知?我们当然可以使用异常处理代码,但是有更好的方法吗?
技术:.NET 2.0/C#
更新:
从其他答案中发现,如果我们有权访问编写该文件的应用程序,那么更好的设计是从其他扩展名.tmp开始,然后在复制后重命名.
如果我们不控制源应用程序,可以使用FileStream.Lock
这是场景,我有文本框,如果我在文本框中键入几个字符,应该打开一个弹出窗口,其中应该有值列表与来自DB的文本框条目匹配复选框.从弹出窗口中选择值后,所选值必须位于带分隔符的文本框中.
在文本框中键入Joh,弹出窗口中选中John,John David,John Edward后,弹出框应该包含所有名称以Joh开头的复选框,所选值必须出现在文本框中,如John,John David,John Edward .
有任何想法吗?
好吧,我想做的是:
我尝试了一些屏蔽代码,但它们似乎都是相反的工作...有关如何解决这个问题的任何提示?
我有一个由十六进制值表示的字节数组,这些是持续时间.数据可以转换为整数值并乘以常数以获得时序.数据解码将作为一系列十六进制字符串保存到文件中.什么是操纵十六进制值的有效方法?
我在处理数据格式时正在考虑性能问题,因为我必须在不同阶段使用多种格式(计算,数据显示等).大多数示例显示从byte []到十六进制字符串("1A 3C D4")的转换,反之亦然,但我正在寻找替代方案,即转换为Int16并使用char []数组.
我正在尝试编写一个函数,该函数接受谓词f和列表,并返回一个列表,该列表包含满足保留顺序的f的所有项.诀窍是只使用更高阶函数(HoF),没有递归,没有理解,当然也没有过滤器.
我一直在寻找一种方法来列出使用.Net框架的给定字体的有效字体样式(即使我必须使用gdi32或其他一些API),因为并非所有字体都属于System.Drawing.FontStyle枚举值(粗体,斜体,常规,罢工,下划线).Segoe UI是一种TrueType Microsoft字体,字体样式为:Regular,Semibold,Light,Bold,Italic和BoldItalic,这是一个不符合要求的字体的完美示例.另一个例子是Arial,它具有:Regular,Narrow,Italic,Bold,Bold Italic,Narrow Bold,Narrow Bold Italic和Narrow Italic.
在Windows 7中(可能也是vista,但我没有要检查的机器)当您打开资源管理器并浏览到%SystemRoot%\ Fonts时,您将看到一个名为"字体样式"的列,其中列出了所有可用的样式对于每种字体,它告诉我有一种方法可以做到这一点,至少通过API调用.
最后,我希望枚举FontFamily列表,然后列出每个系列的每种字体样式.下面列出了所有字体系列的示例代码,如果有人可以提供帮助列出每个家庭可用的字体样式,我将不胜感激.如果我以错误的方式解决这个问题,我绝对愿意接受建议.
Drawing.Text.InstalledFontCollection ifc = new Drawing.Text.InstalledFontCollection();
foreach ( FontFamily ff in ifc.Families )
{
Console.WriteLine(ff.ToString());
// Something like this would be nice, but AFAIK nothing similar exists
/*
foreach ( FontStyle style in ff.Styles )
Console.WriteLine(style.ToString());
*/
}
Run Code Online (Sandbox Code Playgroud) 在SQL Server 2005中,是否有一种方法,使用单个语句,拒绝删除特定表中的行,以供数据库的所有用户使用?
好的,我正在尝试理解HTML和XML格式的CREATE和UPDATE方法的最佳实践.rails生成器生成的控制器的默认代码对我来说有点不清楚.
对于CREATE方法,给定一个很好的保存,生成器对HTML 表示" redirect_to(@whatever) ",对XML表示 " render:xml => @whatever,:status =>:created,:location => @whatever ".
给定一个糟糕的保存,生成器对HTML 表示" render:action =>'new' ",对XML表示 " render:xml => @ whatever.errors,:status =>:unprocessable_entity ".
但是,对于UPDATE方法,在给定良好更新的情况下,生成器对HTML 表示" redirect_to(@whatever) ",对XML表示" head:ok ".
并且,如果更新错误,生成器会对HTML 进行" render:action =>'edit' ",对XML进行" render:xml => @ whatever.errors,:status =>:unprocessable_entity ".
我理解这一点,这对我来说很有意义,并且工作得很好 - 但是,我有两个问题:
首先,对于成功的CREATE和UPDATE,HTML格式,为什么" redirect_to(@whatever) "而不是" render:action =>'show' "?我理解重定向和渲染之间的区别,只是更好奇你们往往会采用哪种方式以及为什么这样做.似乎重定向将是浏览器不必要的额外旅行.
第二,为什么" head:ok "在通过XML成功更新后,但是" render:xml => @whatever,:status =>:created,:location => @whatever "成功通过XML创建?这似乎与我不一致.看起来像通过XML成功更新应该与通过XML成功创建CREATE相同.好像你需要返回新的/更新的对象,所以你可以测试它.你们是怎么做到的,为什么?
我正在尝试定义一个宏来生成一个包含变量的令牌名称.
基本上,我正在尝试的是:
#define GLUER(x,y,z) x##y##z
#define PxDIR(x) GLUER(P,x,DIR)
int main() {
int port;
port = 2;
PxDIR(port) |= 0x01;
}
Run Code Online (Sandbox Code Playgroud)
我希望在上面的语句中生成令牌P2DIR,但根据我的编译器输出,它生成令牌PportDIR,这不是我想要的.这里有什么帮助?或者我正在尝试做什么不可能?