何时在Visual Studio 2010中启用"浏览到查找源"?(见下文)

另外,我想启用它,以便我可以从http://referencesource.microsoft.com/浏览已经下载的源代码文件.
这很有用,因为Microsoft并不总是使用最新的补丁同时发布PDB /源代码.因此,如果我想进入DateTime,我真的不关心不涉及DateTime的最新补丁.我只想浏览我从http://referencesource.microsoft.com/下载的代码.
经过一些调查后,我发现dia2dump是一个查看PDB文件内容的有用工具.(它在C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump\)
看起来当我看不到类似DateTime的源代码时,使用.NET Framework步进,mscorlib.pdb实际上会下载一个文件.
但如果你用dia2dump查看它,它不包含源文件映射.换句话说没用,因为即使你可以像我最初的想法一样浏览源代码,它也行不通,因为没有源文件映射,没有函数的起始地址,还有很多东西丢失:(
我认为这里的解决方案是使用.NET Reflector Pro来保存虚拟机,使用源代码然后禁用更新的框架版本.
当我执行AppDomain.Unload(myDomain)时,我希望它也可以执行完整的垃圾回收.
根据Jeffrey Richter在"CLR via C#"中的说法,他说在AppDomain.Unload期间:
CLR强制进行垃圾收集,回收由现在卸载的AppDomain创建的任何对象使用的内存.调用这些对象的Finalize方法,使对象有机会正确地清理自己.
根据"自定义.NET Framework公共语言运行时"中的"Steven Pratschner":
在所有终结器运行并且域中不再执行任何线程之后,CLR就可以卸载内部实现中使用的所有内存中数据结构.但是,在此之前,必须收集驻留在域中的对象.发生下一次垃圾收集后,将从进程地址空间卸载应用程序域数据结构,并将该域视为已卸载.
我误解了他们的话吗?我做了以下解决方案来重现意外行为(在.net 2.0 sp2中):
一个名为"Interfaces"的类库项目,包含此接口:
public interface IXmlClass
{
void AllocateMemory(int size);
void Collect();
}
Run Code Online (Sandbox Code Playgroud)
一个名为"ClassLibrary1"的类库项目,它引用了"Interfaces"并包含了这个类:
public class XmlClass : MarshalByRefObject, IXmlClass
{
private byte[] b;
public void AllocateMemory(int size)
{
this.b = new byte[size];
}
public void Collect()
{
Console.WriteLine("Call explicit GC.Collect() in " + AppDomain.CurrentDomain.FriendlyName + " Collect() method");
GC.Collect();
Console.WriteLine("Number of collections: Gen0:{0} Gen1:{1} Gen2:{2}", GC.CollectionCount(0), GC.CollectionCount(1), GC.CollectionCount(2));
}
~XmlClass()
{
Console.WriteLine("Finalizing in AppDomain {0}", AppDomain.CurrentDomain.FriendlyName);
}
} …Run Code Online (Sandbox Code Playgroud) 我想知道今天是否有任何理由更喜欢使用委托{}而不是()=> {},在你需要空函数的情况下.
你知道有什么理由比较喜欢一个吗?
为什么String被设计为引用类型而不是值类型?
从建模的角度来看,我会将它建模为一个值类型,因为它表示没有身份的东西.它没有区别属性.(例如,我不能在一个字符串"a"和另一个字符串"a"之间产生任何区别)
我知道如果长字符串存储在堆栈中,我会遇到严重的性能问题.可能这是不可能的,因为字符串变得很长,因为堆栈的大小有限.
如果它不是为了性能,你为什么要将System.String设计为引用类型?(假设任何可能的字符串最多为16个字节)
假设我有这个热门的观察者,每隔5分钟发布连续数字:
1,2,... n,OnCompleted
在某个时间点,在热观察已经开始之后,但在它完成之前,我订阅它直到它完成.
我得到数字:x,x + 1,x + 2,...... n.
我想将收到的值转换为冷可观察量.这有特殊的操作员吗?
我知道我可以使用
Observable.Create(observer => hotObservable.Subscribe(onNext, onCompleted, onError);
Run Code Online (Sandbox Code Playgroud)
但我确信有一种我缺少的Rx扩展方法,就是这样
Msdn doc for IsolatedStorageFile.IncreaseQuotaTostates:
要增加配额,必须从用户启动的事件中调用此方法,例如在按钮单击事件的事件处理程序中.当您调用IncreaseQuotaTo方法时,Silverlight中的公共语言运行库会显示一个对话框,供用户批准该请求.如果用户拒绝请求,则此方法返回false,并且配额保持相同的大小.
Silverlight如何知道该方法是从用户启动的事件(如按钮单击而不是其他线程)调用的?
更具体地说:什么是用户发起的事件?有没有办法克服这个限制?
还有一个问题:
当用户第一次访问我的应用程序时,我会自动下载文件,但我不希望用户按"下载",然后当我检测到需要更多空间时,调用IncreaseQuota并出现"Silverlight对话框",要求更多空间.
我想自动开始下载(非用户启动),如果我检测到需要更多空间,请调用IncreaseQuota,然后出现"Silverlight对话框".(没有用户按下载).