我有这样的代码:
Logger logger = new Logger();
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
logger.LogInformation("Calling SomeObject.SomeMethod at " + DateTime.Now.ToString());
stopWatch.Start();
// This is the method I'm interested in.
SomeResponse response = someObject.SomeMethod(someParam);
stopWatch.Stop();
logger.LogInformation("SomeObject.SomeMethod returned at " + DateTime.Now.ToString());
logger.LogInformation("SomeObject.SomeMethod took " + stopWatch.ElapsedMilliseconds + " milliseconds.");
Run Code Online (Sandbox Code Playgroud)
我需要围绕更多对象及其方法包装类似的代码来进行一些性能分析.我不允许使用第三方插件或软件等.
我真的不想在所有这些方法调用这个所有这些日志代码中编写相同的代码.您如何重构这一点以消除我的一些编码工作?
如果我不是很清楚,请在评论中提问,我会尽力澄清.
谢谢你的帮助!!
我正在努力熟悉C#,就像我使用VB.NET(我工作场所使用的语言)一样.关于学习过程的最好的事情之一是,通过了解另一种语言,你倾向于更多地了解你的主要语言 - 像这样的小问题弹出:
根据我发现的消息来源和过去的经验,VB.NET中声明为WithEvents的字段能够引发事件.据我所知,C#不具有直接等效-但我的问题是:场没有这个关键字在VB.NET不能引发事件,有没有一种方法来创建在C#中此相同的行为呢?VB编译器是否只是阻止这些对象处理事件(实际上允许它们像往常一样引发事件)?
我只是好奇; 我对这个问题没有任何特别的申请......
假设我想实现一个应用程序容器.不是完整的Java EE堆栈,但我需要提供对第三方代码的JDBC资源和事务的访问权限,这些代码将部署在我正在编写的应用程序中.
进一步假设我正在研究JBossTS的交易.我并不满足于此,但据我所知,它似乎最适合我需要做的事情.
如何集成对我的Java SE应用程序中提供连接资源和JTA事务的支持?
在实现工厂或简单工厂时,使用Type而不是Enum来指定要实例化的类会有什么影响?
例如
public class SimpleFactory
{
public static ITest Create(Type type)
{
if (type == typeof(ConcreteTest1))
return new ConcreteTest1();
if (type == typeof(ConcreteTest2))
return new ConcreteTest2();
throw new Exception("Invalid type");
}
}
Run Code Online (Sandbox Code Playgroud) 我真的很喜欢我的Mac,我正在考虑将来的某个时候开发软件.你制作Mac软件的原因是什么?因为你认为Mac太酷了?或者市场如此有趣?我想我们很多人都想知道,对吧?
对我来说,正如我所说,这是Mac的酷.我对市场一无所知.
目前" 避免检查空事件处理程序"是标题为C#隐藏功能的帖子的答案的顶部,它包含严重误导性信息.
虽然我理解Stack Overflow是一个"民主",并且答案因公众投票而上升到顶峰,我觉得很多投票给答案的人要么没有完全理解C#/ .NET或者没有花时间充分了解帖子中描述的做法的后果.
简而言之,该帖子主张使用以下构造来避免在调用事件时检查null.
public event EventHandler SomeEvent = delegate {};
// Later..
void DoSomething()
{
// Invoke SomeEvent without having to check for null reference
SomeEvent(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)
乍一看,这似乎是一个聪明的捷径,但它可能是大型应用程序中一些严重问题的原因,特别是如果涉及并发性.
在调用事件的委托之前,您必须检查空引用.仅仅因为您使用空委托初始化事件并不意味着您的类的用户不会在某些时候将其设置为null并破坏您的代码.
像这样的东西是典型的:
void DoSomething()
{
if(SomeEvent != null)
SomeEvent(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)
但即使在上面的例子中,也存在这样的可能性,即DoSomething()可能由一个线程运行,另一个可能会删除事件处理程序,并且可能会出现竞争条件.
假设这种情况:
Thread A. Thread B.
-------------------------------------------------------------------------
0: if(SomeEvent != null)
1: { // remove all handlers of SomeEvent
2: SomeEvent(this, EventArgs.Empty);
3: }
在引发事件的代码检查了委托以获取空引用之后,但在调用委托之前,线程B删除了SomeEvent事件的事件处理程序.当SomeEvent(this,EventArgs.Empty); 调用,SomeEvent为null并引发异常.
为了避免这种情况,提出事件的更好模式是:
void DoSomething()
{
EventHandler handler …Run Code Online (Sandbox Code Playgroud) 我有一个按钮控件.一旦用户点击它,就会触发click事件,然后该按钮应被禁用.我怎样才能做到这一点?我可以选择使用JQuery或JavaScript或两者.
这是我的按钮声明:
<asp:Button
ID="Button1"
runat="server"
Text="Click Me"
onclick="Button1_Click"
/>
Run Code Online (Sandbox Code Playgroud)
在后面的按钮单击代码上,我添加了一个Response.Write().应该执行该操作然后应该禁用该按钮
我不得不在已经制作的网站上工作,只需添加一些小模块
当我正在更新时,在不同的子文件夹中有许多名为myDB.mdb的文件,我想确保我的应用程序连接正确的数据库,所以我开始重命名子文件夹...在其中一个子文件夹,我刷新,主站点我的工作停止了
我重新命名为正确的名称..刷新...刷新...刷新..我仍然刷新,我开始另一个浏览器..它给出一个连接问题:S
提供商错误'80004005'
未指定的错误
/new/conn.asp,第13行
关于他的任何想法:S会感激任何帮助!
像999999999999990Perl 一样添加15位数字会产生一段时间的结果,例如1.9999999999999e+.当使用substr它仍然产生时1.99999999999,并且当使用BigInt结果时仍然有一段时间.Perl 5.8.7的正确Perl语法是什么,以获得没有句点的结果?
use BigInt;
$acct_hash = substr(($acct_hash + $data[1]),0,15);
BigInt.pm -> /opt/perl5.8.7/lib/5.8.7/Math/BigInt.pm
BigInt -> /opt/perl5.8.7/lib/5.8.7/Math/BigInt.pm
Run Code Online (Sandbox Code Playgroud) 我需要检查一个JavaScript数组,看看是否有任何重复的值.最简单的方法是什么?我只需要找到重复的值是什么 - 我实际上并不需要它们的索引或重复它们的次数.
我知道我可以遍历数组并检查匹配的所有其他值,但似乎应该有一个更简单的方法.有任何想法吗?谢谢!