在XP机器上有一个由.net服务创建的私有消息队列.当我想在VB6应用程序中访问此私有队列时,我不断收到"访问被拒绝"错误.所以这似乎是一个安全问题,只有我不明白为什么即使我以管理员身份登录,我仍然无法访问在同一台机器上创建的队列.还有什么我必须考虑的事情.
关于如何在VB6中使用队列的示例
Public msgQueue As MSMQQueue
Private Sub OpenQueue()
Dim MQ As New MSMQQueueInfo
MQ .PathName = ".\Private$\incommingQueue"
Set msgQueue = MQ.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)
End Sub
Run Code Online (Sandbox Code Playgroud) MSDN上的这篇文章指出,您可以根据需要使用尽可能多的try catch块,并且不会产生任何性能成本,因为不会引发任何实际异常.
因为我总是认为即使没有抛出异常,try-catch总是会受到很小的性能影响,所以我做了一点测试.
private void TryCatchPerformance()
{
int iterations = 100000000;
Stopwatch stopwatch = Stopwatch.StartNew();
int c = 0;
for (int i = 0; i < iterations; i++)
{
try
{
// c += i * (2 * (int)Math.Floor((double)i));
c += i * 2;
}
catch (Exception ex)
{
throw;
}
}
stopwatch.Stop();
WriteLog(String.Format("With try catch: {0}", stopwatch.ElapsedMilliseconds));
Stopwatch stopwatch2 = Stopwatch.StartNew();
int c2 = 0;
for (int i = 0; i < iterations; i++)
{
// c2 …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么BeginInvoke方法不接受匿名方法.
void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (InvokeRequired)
{
//Won't compile
BeginInvoke(delegate(object sender, ProgressChangedEventArgs e)
{ bgWorker_ProgressChanged(sender, e); });
}
progressBar1.Increment(e.ProgressPercentage);
}
Run Code Online (Sandbox Code Playgroud)
它告诉我'无法从'匿名方法'转换为'System.Delegate',而当我将匿名方法转换为委托时,它确实有效吗?
BeginInvoke((progressDelegate)delegate { bgWorker_ProgressChanged(sender, e); });
Run Code Online (Sandbox Code Playgroud) 目前我们仍在使用2.0框架,虽然2.0提供了我们目前所需的所有必要条件,但我们迟早要继续使用3.5.前几天有一个内部讨论正在讨论这次升级是否存在任何风险,并且由于我们所有的客户仍在使用2.0框架,因此不能掉以轻心.有一位同事表示,只需重新编译3.5框架的所有产品就更安全了.这将解决任何兼容性问题.很多工作确实也许是不必要的,我相信微软的受让人认为框架是向后兼容的,为什么我们应该对它有任何疑问?我这是对的吗?
每个同事都在同一个VPC的副本上工作,并使用Tortoise提交文件.由于所有VPC具有相同的主机名并且提交到相同的存储库,因此出现了一些问题.关于这是否会导致存储库中的任何类型的损坏或冲突的问题.
我最初认为这不会造成任何问题,因为提交是原子的,而subversion不关心提交机器的主机名.但我找不到任何消息来源说明这是一个真实的事实.
所以问题是,在提交来自多个VPC的文件时是否有任何需要考虑的问题,这些文件都具有相同的主机名?