我试图检查异步方法抛出具体异常.
为此我使用的是MSTEST和FluentAssertions 2.0.1.
我已经检查了Codeplex上的这个讨论,并看看它如何与异步异常方法一起工作,这是另一个关于FluentAssertions异步测试的链接:
尝试使用我的'生产'代码一段时间之后,我已经关闭了Fluentassertions假的aync类,我的结果代码是这样的(将此代码放在[TestClass]:
[TestMethod]
public void TestThrowFromAsyncMethod()
{
var asyncObject = new AsyncClass();
Action action = () =>
{
Func<Task> asyncFunction = async () =>
{
await asyncObject.ThrowAsync<ArgumentException>();
};
asyncFunction.ShouldNotThrow();
};
}
internal class AsyncClass
{
public async Task ThrowAsync<TException>()
where TException : Exception, new()
{
await Task.Factory.StartNew(() =>
{
throw new TException();
});
}
public async Task SucceedAsync()
{
await Task.FromResult(0);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是ShouldNotThrow无效:
代码无法识别ShouldNotThrow方法.如果我尝试编译,它会给我这个错误:'System.Func'不包含'ShouldNotThrow'的定义和最好的扩展方法重载'FluentAssertions.AssertionExtensions.ShouldNotThrow(System.Action,string,params object []) …
我需要在循环中连续构建大字符串并将它们保存到数据库中,目前偶尔会产生一个OutOfMemoryException.
这里基本上是基于一些数据使用XmlWriterwith 创建一个字符串StringBuilder.然后我从外部库调用一个方法,将该xml字符串转换为其他字符串.之后,转换后的字符串将保存到数据库中.对于不同的数据,这整个过程在一个循环中重复完成大约100次.
字符串本身不是太大(每个低于500kByte),并且在此循环期间进程内存不会增加.但是,偶尔我会得到一个OutOfMemeoryExcpetion内部StringBuilder.Append.有趣的是,此异常不会导致崩溃.我可以捕获该异常并继续循环.
这里发生了什么?为什么我会得到一个OutOfMemoryException尽管系统中仍有足够的可用内存?这是一些GC堆问题吗?
鉴于我无法绕过转换所有这些字符串,我能做些什么来使这项工作可靠?我应该强制GC收集吗?应该Thread.Sleep进入循环?我应该停止使用StringBuilder吗?应该只是在面对时重试OutOfMemoryException?
我今天早些时候(在TechCrunch.com上)遇到了这个概念证明,并且对于他们如何设法完成最终结果感到震惊和好奇.他们表示他们不使用webGL或任何插件,但他们能够直接与GPU交互并使用Javascript以高达60 fps的速度呈现3D视觉效果.任何想法如何做到这一点,或如何在不使用插件的情况下从Javascript访问GPU?
网站地址是:famo.us
ps:尝试使用箭头键将方向移向远方!
是否有一种XAML方法可以根据项目的某个属性自动对绑定项目(ViewModel对象列表)ItemsControl进行排序.ItemsControl是DataTemplate的一部分.我认为CollectionViewSource可以解决这个问题,但是如何将CollectionViewSource绑定到ItemsControl.以下代码没有任何表现:
<--xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"-->
<DataTemplate DataType="{x:Type vm:Company}">
<DataTemplate.Resources>
<CollectionViewSource x:Key="viewSource" Source="{Binding Employees}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="ID" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</DataTemplate.Resources>
<Viewbox>
<ItemsControl ItemsSource="{Binding Source={StaticResource viewSource}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Viewbox>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud) 如何在XAML中删除故事板(即DataTrigger中的RemoveStoryboard操作),但保留动画的值.与Animatable.BeginAnimation类似:
如果动画的BeginTime为null,则将删除任何当前动画,并保留属性的当前值.
您将如何实现如Expression Blend中所示的对接工具箱窗口系统,您可以通过多种方式将工具箱窗口对接在一起,重叠为标签或浮动顶层窗口.我的系统应该与Expression Blend中的行为非常相似.此外,我得到视觉提示的方式,拖动时工具箱窗口将停靠,这正是我需要的.
只有一个例外:在混合时,当拖动到已经顶层(撕下)的工具箱窗口时,我只能将其作为填充整个窗口的选项卡停靠.但是我需要一个工具箱窗口和主窗口之间没有区别的系统.我需要能够将窗口停靠在工具箱窗口中,就像在主窗口中一样.
另请注意,由于内部策略,我无法使用任何开源或第三方库.
我会对你如何为这样的东西设置一般类设计感兴趣?我希望保持尽可能通用,以便它可以用于许多不同的场景.
停靠行为如下图所示.中心图像显示了感应拖曳对接区域.窗口会突然出现的外部图像:
alt text http://img196.imageshack.us/img196/2450/dockingregions.png
一般来说,我在这里遇到市长问题:我如何设计编程模型(如何在XAML中持久化对接配置)以及如何实际实现底层功能.我的第一个想法是,我想成为DockPanel和TabControl的共生.有点像这样:
<DockTabControl>
<DockTabItem Dock="FirstLeft">
<DockTabItem.Header>
<TextBlock>Tab 1</TextBlock>
</DockTabItem.Header>
<!-- Tab 1 content -->
</DockTabItem>
<DockTabItem Header="Tab 2" Dock="SecondLeft" DockMode="MergeWithPreviousToTabgroup">
<!-- Tab 2 content -->
</DockTabItem>
<DockTabItem Header="Tab 3" Dock="FirstMiddle">
<!-- Tab 3 content -->
</DockTabItem>
</DockTabControl>
Run Code Online (Sandbox Code Playgroud)
当然这还没有意义.无法以这种方式定义停靠,并且此处尚未解决窗口问题.但我喜欢仅通过在DockTabItem上定义一些属性来定义对接和tabgroups的想法.我真的不想引入像TabGroups或类似的额外控件.我只是通过定义子节点和Dock附加属性的顺序来了解DockPanel中的对接行为.当然,我的对接会更复杂,行为更像网格.
我想从我的WPF应用程序生成(然后打印或保存)大型XPS文档(> 400页).我们有一些需要写入XPS的大量内存数据.
如果没有得到一个OutOfMemoryException怎么办呢?有没有办法可以把文件写成块?这通常是怎么做的?我不应该首先将XPS用于大文件吗?
这个根本原因OutOfMemoryException似乎是巨大的创造FlowDocument.我正在创建完整FlowDocument,然后将其发送到XPS文档编写器.这是错误的方法吗?
我试图了解堆碎片是如何工作的.以下输出告诉我什么?
这堆是否过于分散?
我有243010个"自由对象",总共53304764个字节.堆中的那些"自由对象"空间是否曾经包含对象但是现在是否收集了garabage?
如何强制碎片堆清理?
!dumpheap -type Free -stat
total 243233 objects
Statistics:
MT Count TotalSize Class Name
0017d8b0 243010 53304764 Free
Run Code Online (Sandbox Code Playgroud) 在Silverlight 5 beta中,我可以直接在XAML中调试数据绑定.Visual Studio 2012(RC)中的此功能在哪里?我可以使用WPF,WinRT和/或Silverlight吗?如果是这样的话?当我在绑定表达式应用程序上设置断点时,我得到的消息是不会命中断点,因为没有源代码与此行相关联.
更新:
它适用于Silverlight 5应用程序的Visual Studio 2012(RC),但不适用于WPF应用程序.请不要告诉我,WPF不存在此功能!
这是我的情景:
在解决方案A中的项目A中开发nuget包A期间,我们经常需要在另一个项目中对其进行测试.出于这个原因,我们有一个dev nuget feed包含未发布的包A.当构建解决方案A时,它将自动推送到该dev feed.
为了进行测试,我们有一个包含多个项目的解决方案B,所有项目都从该dev nuget feed引用包A.
每当我们重建解决方案A(并且包a被推送到feed)时,我们希望在测试期间在解决方案B的所有项目中使用包的新版本.
一旦包A实际上被释放,它将被推送到发布nuget feed,然后解决方案B应该从发布feed而不是dev feed中提取包.
这些是我的两个问题:
强制将包A重新下载到解决方案B的packages文件夹中的正确方法是什么,并使所有项目都使用包的新版本,即使包的版本没有更改?
这个(常见的)场景的建议工作流程是什么?我应该采用不同的方式吗?
wpf ×4
c# ×3
debugging ×2
memory ×2
3d ×1
animation ×1
async-await ×1
clr ×1
data-binding ×1
datatemplate ×1
datatrigger ×1
docking ×1
famo.us ×1
gpu ×1
itemscontrol ×1
javascript ×1
memory-leaks ×1
nuget ×1
printing ×1
sorting ×1
storyboard ×1
windows ×1
xaml ×1
xps ×1