所以我理解在using语句结束时,调用dispose方法.
如果我使用a会发生什么 'using(var a = new Stream()) { a.SomethingThrowsAnException() }'
流是否仍然通过他处理方法?
我写了一个实现IDisposable的类,它是关键任务,我不会丢失内存中的内容,因此我计划在发生灾难性事件时序列化数据,即我有一个像我正在使用的对象的自定义流.
有什么建议?
谢谢.
我正在使用 Windows UI 自动化框架:http : //msdn.microsoft.com/en-us/library/System.Windows.Automation(v=vs.110).aspx
我遇到的问题是微软提供的 UI 自动化框架似乎对某些 Windows 资源管理器视而不见。我可以找到根 AutomationElement“滚动条”,但是我找不到它的子组件,即按钮、位置等。这很奇怪,因为显然很多 WPF 应用程序会使用 Windows 资源管理器来选择文件,因此 Microsoft 会将其视为一个主要错误在其框架内。所以我一定是做错了什么?

下面的代码演示了我在做什么。root是 Windows 资源管理器 AutomationElement。我验证了这一点,因为我可以看到滚动条项目,因为它有一个自动化 ID。我还验证了它是正确的垂直滚动条,因为 Windows 资源管理器中有两个。
AutomationElement functionControl = root.FindFirst(TreeScope.Descendants |
TreeScope.Element | TreeScope.Subtree,new
PropertyCondition(AutomationElement.NameProperty, "Page down"));
Run Code Online (Sandbox Code Playgroud) 理想情况下,我想实现类似的东西 var queryResult = ~( () => function(arg) );
我写了一个自动化框架,我厌倦了为它编写长行代码.它使用查询来搜索UI和其他数据源.所以我想,由于这个项目与源代码是分开的,我可以通过操作员来解决问题.以下编译很好,但我收到一个错误:
不能将运算符'〜'应用于lambda表达式的操作数
public struct Query<T>
{
public static Query<T> operator ~(Query<T> func)
{
return Poll.IdleFor(() => func, 10000);
}
}
Run Code Online (Sandbox Code Playgroud)
在正在运行的代码的另一部分中,我有一个方法签名,如下所示:
static T IdleFor<T>(Func<T> arg, long waitTimeInMilliseconds)<T>(Func<T> arg, long milliseconds)
我通过它来称呼它 MyStaticClass.IdleFor( () => myFunction(val), 10000)
我在这里错过了什么?