从我的C#代码,不在IIS/ASP.NET中运行,我需要向ASP.NET临时文件夹添加用户帐户权限.(将我的站点添加到IIS时需要.)本地系统上的文件夹是:
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
我讨厌将这条路径硬编码到我的代码中,所以我想知道我是否可以从.NET框架本身检索它?
比如说,在我的Google Chrome扩展程序中,我执行此操作:
console.log(msg);
Run Code Online (Sandbox Code Playgroud)
Chrome调试器对类似的消息进行分组,如下所示:

是否有任何关闭它并发布消息就像它们一样?
javascript google-chrome google-chrome-extension google-chrome-devtools
比如说,如果我想在min和之间生成一个无偏的随机数max,我会这样做:
var rand = function(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
};
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要的生成之间的随机数min,并max更偏向价值N之间min并max在一定程度上D?最好用概率曲线来说明它:

我正在编写我的Google Chrome扩展程序,我在后台脚本中设置了应用程序的图标:
try
{
objIcon = {
"19": "images/icon19.png",
"38": "images/icon38.png"
};
chrome.browserAction.setIcon({
path: objIcon,
tabId: nTabID
});
}
catch(e)
{
}
Run Code Online (Sandbox Code Playgroud)
请注意,我在try/catch块中包装了调用.
不过,有时我在控制台日志中收到以下消息:
运行browserAction.setIcon时未选中runtime.lastError:没有标识为:11618的选项卡.
调试此错误很难,因为它似乎只在我关闭或重新加载Chrome标签时出现,它没有行号或任何信息供我跟踪,而且通过调试器运行并不容易(即我不能在发生错误时设置断点,但如果我在线上盲目设置断点chrome.browserAction.setIcon(),我就不再在日志中看到该消息了.)
所以我很好奇是否有人可以建议如何解决这个错误?
编辑:只是发布更新.我仍然无法解决此问题.@abraham在下面提出的建议提供了一种有点工作的方法,但它并非失败安全.例如,在标签关闭的情况下,我可以调用他的建议chrome.browserAction.setIcon(),如果标签尚未关闭,可能会成功,但在其回调函数中,标签最终可能会关闭,因此任何连续调用其他API需要相同的标签ID,说setBadgeBackgroundColor()可能仍然给我相同的No tab with id例外.换句话说,对于那些了解本土编程的人来说,这是一种典型的竞争条件.而且我不确定它是否是Chrome中的一个错误,因为很明显JS不提供任何线程同步方法......
在进行测试时,我已经多次目睹了这种行为.它并不经常发生,因为我们谈论的是非常精确的时序情况,但它确实发生了.因此,如果有人找到解决方案,请在下面发布.
javascript google-chrome race-condition google-chrome-extension
我使用Visual Studio C++ 2008 SP1,x64 C++编译器编译了以下内容:
我很好奇,为什么编译器会nop在那些calls 之后添加这些指令?
PS1.我会理解第二和第三个nops将是4字节边距上的代码对齐,但是第一个nop会打破这个假设.
PS2.编译的C++代码中没有循环或特殊的优化内容:
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//This makes no sense. I used it to set a debugger breakpoint
::GdiFlush();
srand(::GetTickCount());
}
Run Code Online (Sandbox Code Playgroud)
PS3.附加信息: 首先,谢谢大家的意见.
以下是其他观察结果:
我的第一个猜测是增量链接可能与它有关.但是,项目中的Release构建设置Visual Studio已incremental linking关闭.
这似乎x64只影响构建.构建为x86(或Win32)的相同代码没有那些nops,即使使用的指令非常相似:
x64产生的代码VS 2013有些不同,它仍会nop在某些calls 之后添加s: …我在我的开发IIS服务器(来自VS2010 IDE)上运行以下方法,在64位Windows 7计算机上安装了16 GB的RAM:
public static MemoryStream copyStreamIntoMemoryStream(Stream stream)
{
long uiLen = stream.Length;
byte[] buff = new byte[0x8000];
int nSz;
MemoryStream ms = new MemoryStream();
try
{
while ((nSz = stream.Read(buff, 0, buff.Length)) != 0)
{
ms.Write(buff, 0, nSz);
}
}
finally
{
Debug.WriteLine("Alloc size=" + ms.Length);
}
return ms;
}
Run Code Online (Sandbox Code Playgroud)
我得到了System.OutOfMemoryException这一行:
ms.Write(buff, 0, nSz);
Run Code Online (Sandbox Code Playgroud)
分配268435456个字节时抛出:
Alloc size = 268435456
这是0x10000000或256 MB.所以我想知道是否需要设置一些全局设置才能使其正常工作?
以下是项目配置设置的屏幕截图:

如果我有一个DateTime值数组:
List<DateTime> arrayDateTimes;
Run Code Online (Sandbox Code Playgroud)
在它们中找到平均DateTime的方法是什么?
例如,如果我有:
2003-May-21 15:00:00
2003-May-21 19:00:00
2003-May-21 20:00:00
Run Code Online (Sandbox Code Playgroud)
平均值应该是:
2003-May-21 18:00:00
Run Code Online (Sandbox Code Playgroud) 比方说,如果我有一个线程ID,我可以放心,每个进程或整个操作系统(在所有登录用户中)它将是唯一的(因为线程正在运行)?
我使用以下代码来同步多个正在运行的进程之间对共享资源的互斥访问.
互斥锁是这样创建的:
Mutex mtx = new Mutex(false, "MyNamedMutexName");
Run Code Online (Sandbox Code Playgroud)
然后我用这个方法进入互斥部分:
public bool enterMutuallyExclusiveSection()
{
//RETURN: 'true' if entered OK,
// can continue with mutually exclusive section
bool bRes;
try
{
bRes = mtx.WaitOne();
}
catch (AbandonedMutexException)
{
//Abandoned mutex, how to handle it?
//bRes = ?
}
catch
{
//Some other error
bRes = false;
}
return bRes;
}
Run Code Online (Sandbox Code Playgroud)
这段代码留给它:
public bool leaveMutuallyExclusiveSection()
{
//RETURN: = 'true' if no error
bool bRes = true;
try
{
mtx.ReleaseMutex();
}
catch
{
//Failed …Run Code Online (Sandbox Code Playgroud) 我在Windows 7桌面上安装了Visual Studio 2010,主要用于调试ASP.NET解决方案.一切都运行良好,直到其中一个Windows更新安装了新版本的.NET Framework.现在,当我尝试放置断点然后在我的C#代码中执行"调试步骤"时,我收到以下消息:

更糟糕的是,它不会一直发生.我试图找到任何模式,但我能描述它的最好方法是零星的.
知道如何解决这个问题吗?