我注意到在System.Threading.TimerBase.Dipose()方法中有一个try{} finally{}块但是try{}是空的.
使用try{} finally{}空尝试有什么价值吗?
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
internal bool Dispose(WaitHandle notifyObject)
{
bool status = false;
bool bLockTaken = false;
RuntimeHelpers.PrepareConstrainedRegions();
try {
}
finally {
do {
if (Interlocked.CompareExchange(ref m_lock, 1, 0) == 0) {
bLockTaken = true;
try {
status = DeleteTimerNative(notifyObject.SafeWaitHandle);
}
finally {
m_lock = 0;
}
}
Thread.SpinWait(1);
// yield to processor
}
while (!bLockTaken);
GC.SuppressFinalize(this);
}
return status;
}
Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以用一些命令清理控制台..
console.log(),可以打印...是否有清理控制台的命令?
我试过console.log(console);并在下面得到这个功能......
assert: function assert() { [native code] }
constructor: function Console() { [native code] }
count: function count() { [native code] }
debug: function debug() { [native code] }
dir: function dir() { [native code] }
dirxml: function dirxml() { [native code] }
error: function error() { [native code] }
group: function group() { [native code] }
groupEnd: function groupEnd() { [native code] }
info: function info() { [native code] }
log: function log() { …Run Code Online (Sandbox Code Playgroud) 新的Google Chrome自动翻译功能在我们的某个应用程序中的一个页面上绊倒.每当我们导航到此特定页面时,Chrome都会告诉我们该页面是丹麦文并提供翻译.该页面是英文的,就像我们的应用程序中的每个其他页面一样.此特定页面是一个内部测试页面,其中包含几十个带有英文标签的表单字段.我不知道为什么Chrome认为此页面是丹麦文.
有没有人深入了解这种语言检测功能的工作原理以及我如何确定导致Chrome认为该页面是丹麦语的原因是什么?
当多个线程请求锁定同一个对象时,CLR是否保证按照请求的顺序获取锁定?
我写了一个测试,看看这是否属实,似乎表明是,但我不确定这是否是确定的.
class LockSequence
{
private static readonly object _lock = new object();
private static DateTime _dueTime;
public static void Test()
{
var states = new List<State>();
_dueTime = DateTime.Now.AddSeconds(5);
for (int i = 0; i < 10; i++)
{
var state = new State {Index = i};
ThreadPool.QueueUserWorkItem(Go, state);
states.Add(state);
Thread.Sleep(100);
}
states.ForEach(s => s.Sync.WaitOne());
states.ForEach(s => s.Sync.Close());
}
private static void Go(object state)
{
var s = (State) state;
Console.WriteLine("Go entered: " + s.Index);
lock (_lock)
{
Console.WriteLine("{0,2} …Run Code Online (Sandbox Code Playgroud) 我正在使用Office Open XML SDK读取.xlsx文件,并对阅读日期/时间值感到困惑.我的一个电子表格有此标记(由Excel 2010生成)
<x:row r="2" spans="1:22" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:c r="A2" t="s">
<x:v>56</x:v>
</x:c>
<x:c r="B2" t="s">
<x:v>64</x:v>
</x:c>
.
.
.
<x:c r="J2" s="9">
<x:v>17145</x:v>
</x:c>
Run Code Online (Sandbox Code Playgroud)
单元格J2具有日期序列值和样式属性s="9".但是,Office Open XML规范称9对应于后面的超链接.这是ECMA-376第4版第499页第1部分 - 基础和标记语言参考 .pdf的屏幕截图.

规范中包含的presetCellStyles.xml文件也将builtinId9称为后续超链接.
<followedHyperlink builtinId="9">
Run Code Online (Sandbox Code Playgroud)
规范中的所有样式都只是可视化格式样式,而不是数字样式.定义的数字样式在哪里?如何区分样式引用s="9"与指示单元格格式(可视)样式与数字样式?
显然,我正在寻找错误的地方,以匹配单元格上的样式与其数字格式.哪里是找到这些信息的合适地点?
我正在运行NUnit测试来评估一些已知的测试数据和计算结果.这些数字是浮点数的双倍数,所以我不指望它们完全相等,但我不确定如何将它们视为对于给定的精度相等.
在NUnit中,我们可以与固定的容差进行比较:
double expected = 0.389842845321551d;
double actual = 0.38984284532155145d; // really comes from a data import
Expect(actual, EqualTo(expected).Within(0.000000000000001));
Run Code Online (Sandbox Code Playgroud)
并且对于零以下的数字工作正常,但随着数字的增加,公差确实需要改变,因此我们始终关注相同数量的精度数字.
具体来说,此测试失败:
double expected = 1.95346834136148d;
double actual = 1.9534683413614817d; // really comes from a data import
Expect(actual, EqualTo(expected).Within(0.000000000000001));
Run Code Online (Sandbox Code Playgroud)
当然,更大的数字会因容忍而失败.
double expected = 1632.4587642911599d;
double actual = 1632.4587642911633d; // really comes from a data import
Expect(actual, EqualTo(expected).Within(0.000000000000001));
Run Code Online (Sandbox Code Playgroud)
评估两个浮点数的正确方法是什么,它与给定的精度相等?有没有内置的方法在NUnit中执行此操作?
我们正在迁移一个应用程序以使用IIS7集成模式.在设计为在HTTP请求的上下文中工作的库代码中,我们通常使用如下代码:
if (HttpContext.Current != null &&
HttpContext.Current.Request != null) {
// do something with HttpContext.Current.Request
} else {
// do equivalent thing without HttpContext..
}
Run Code Online (Sandbox Code Playgroud)
但是在IIS7集成模式下,HttpContext.Current.Request每次调用此代码时,检查都会抛出异常Application_Start.
protected void Application_Start(object sender, EventArgs e)
{
SomeLibrary.DoSomethingWithHttpContextCurrentDetection();
}
Run Code Online (Sandbox Code Playgroud)
结果是:
System.Web.HttpException:请求在此上下文中不可用
如果不将这些调用包装在异常处理程序中并根据是否生成异常采取操作,如何检测请求是否真的可用.
看着HttpContext在反射我看到它有一个internal bool HideRequestResponse领域,但它的内部,所以我只能得到它与反思,这就是脆弱的.是否有更正式/批准的方式来确定是否可以打电话HttpContext.Request?
这篇关于这个主题的博客文章说不使用HttpContext,但是如何在通用库代码中确定它是否可以使用HttpContext?
我正在使用那里提到的解决方法Application_BeginRequest和一个initialized字段只能初始化一次作为其中一部分BeginRequest,但必须在每个调用应用程序中完成,而我更喜欢使库代码更健壮并处理这个情况无论从哪里调用.
如果我的struct实现了IDisposable,那么当在using语句中使用时它会被装箱吗?
谢谢
编辑:这个timedlock是一个结构并实现Idisposable. http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
编辑2:看看IL似乎如果你的结构公开Dispose()为public,当你忘记调用Dispose()时,编译器会在结构的一个实例超出范围时调用Dispose(例如,你没有使用"使用"声明)?
我正在使用TextWriter尝试写入隐藏文件,并抛出异常.我似乎无法弄清楚如何写入隐藏文件.
using (TextWriter tw = new StreamWriter(filename))
{
tw.WriteLine("foo");
tw.Close();
}
Run Code Online (Sandbox Code Playgroud)
例外:
Unhandled Exception: System.UnauthorizedAccessException:
Access to the path 'E:\*\media\Photos\2006-08\.picasa.ini' is denied.
Run Code Online (Sandbox Code Playgroud)
如何写入隐藏文件?
关于dvcs系统的大量文章声称优越的分支和合并支持是从svn迁移到dvcs系统的一个原因.这些系统究竟如何以不同的方式进行分支和合并以使其更好?