我有一堆属性,我将使用读/写锁.我可以使用a try finally或a using子句来实现它们.
在try finally我之前try,我将获得锁定,然后释放finally.在该using子句中,我将创建一个在其构造函数中获取锁的类,并在其Dispose方法中释放.
我在很多地方使用读/写锁,所以我一直在寻找可能更简洁的方法try finally.我有兴趣听听一些关于为什么不推荐一种方式的想法,或者为什么一种方式可能比另一方更好.
方法1(try finally):
static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock();
private DateTime dtMyDateTime_m
public DateTime MyDateTime
{
get
{
rwlMyLock_m .AcquireReaderLock(0);
try
{
return dtMyDateTime_m
}
finally
{
rwlMyLock_m .ReleaseReaderLock();
}
}
set
{
rwlMyLock_m .AcquireWriterLock(0);
try
{
dtMyDateTime_m = value;
}
finally
{
rwlMyLock_m .ReleaseWriterLock();
}
}
}
Run Code Online (Sandbox Code Playgroud)
方法2:
static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock();
private DateTime dtMyDateTime_m
public …Run Code Online (Sandbox Code Playgroud) 我需要我的应用程序来ping我稍后将指定的地址,只需将平均Ping时间复制到Label的.Text即可.
有帮助吗?
编辑:
如果有人有兴趣,我找到了解决方案:
Ping pingClass = new Ping();
PingReply pingReply = pingClass.Send("logon.chronic-domination.com");
label4.Text = (pingReply.RoundtripTime.ToString() + "ms");
Run Code Online (Sandbox Code Playgroud) 我有一个文本框和一个按钮.该按钮调用Ping(),我希望显示ping的任何进度textBox1.
void Ping()
{
p = new Process();
p.StartInfo.FileName = "ping";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.Arguments = "www.microsoft.com";
p.Start();
textBox1.Text = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
怎么实现呢?我上面写的当前实现并未显示进度,而是显示最终输出.