在WPF中使用画笔,模板和样式等资源时,可以将它们指定为StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
Run Code Online (Sandbox Code Playgroud)
或者作为DynamicResource
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
Run Code Online (Sandbox Code Playgroud)
大多数时候(总是?),只有一个工作,另一个将在运行时抛出异常.但我想知道原因:
我假设静态与动态之间的选择并不像看起来那么随意......但我没有看到模式.
我注意到在.NET 4.5中,WPF Dispatcher获得了一组新的方法来在Dispatcher的线程上执行名为InvokeAsync的东西.之前,.NET 4.5我们有Invoke和BeginInvoke,它们分别同步和异步处理这个.
除了命名和稍微不同的重载外,这些BeginInvoke和InvokeAsync方法之间是否有任何重大差异?
哦,我已经检查了,两者都可以await编辑:
private async Task RunStuffOnUiThread(Action action)
{
// both of these works fine
await dispatcher.BeginInvoke(action);
await dispatcher.InvokeAsync(action);
}
Run Code Online (Sandbox Code Playgroud) 如果接口指定了返回另一个接口的属性或方法,为什么第一个接口的实现不允许将返回类型"更改"为更具体的类型?
我们举一个例子来说明:
interface IFoo
{
IBar GetBar();
}
interface IBar
{ }
class Foo : IFoo
{
// This is illegal, we are not implementing IFoo properly
public Bar GetBar()
{
return new Bar();
}
}
class Bar : IBar
{ }
Run Code Online (Sandbox Code Playgroud)
我知道如何让它发挥作用,这不是我关心的问题.
我可以:
GetFoo()为IBar,或GetBar从IFoo.GetBar()方法调用即可我真正要问的是不仅允许上面的代码编译的原因.是否有上述情况不符合规定的合同IFoo.
我必须转换System.Collections.Generic.IDictionary<string, decimal>为System.Collections.Generic.Dictionary<string, decimal>,而我不能.我尝试了ToDictionary方法,无法指定正确的参数.
我尝试过以下方法:
// my dictionary is PlannedSurfaces (of type IDictionary<string, decimal>)
blabla.ToDictionary<string, decimal>(localConstruction.PlannedSurfaces)
Run Code Online (Sandbox Code Playgroud) 我们正在做一个MySQL的小基准测试,我们希望看看它对我们的数据的执行情况.
该测试的一部分是看多个并发线程在服务器上使用各种查询进行操作时的工作原理.
在MySQL文档(5.0)是不是多线程的客户真的清楚.我应该指出我确实链接了线程安全库(libmysqlclient_r.so)
我正在使用预准备语句并执行read(SELECT)和write(UPDATE,INSERT,DELETE).
mysql_real_connect()返回我打电话时得到的原始数据库句柄mysql_init())mysql_affected_rows返回正确的值而不是与其他线程的调用冲突(互斥/锁可能工作,但感觉不对)我想创建一个测试应用程序来测试不同系统的网络性能.为此,我计划让该机器通过专用(非繁忙)网络将以太网帧发送到另一台机器(或设备),该机器只接收该消息并将其发回.发送应用程序将记录总往返时间(以及其他内容).
测试的目的是了解特定系统(OS +组件等)在网络流量方面的表现.这在下图中显示为机器A. 请注意,我对网络基础设施(交换机,电缆等)的性能不感兴趣 - 我正在尝试测试机器A内的网络流量的性能(即从它到达网卡到达用户空间的时候)
我们将(尝试)测量所有类型的东西,一件事是消息的总往返,还有机器A的中断延迟,一般驱动程序开销等等.机器A将是一个实时系统.但是为了支持这些测试,我需要一个可以反弹消息的独立机器,并以其他方式为测试系统添加网络刺激.这个单独的机器是下图中的机器B,这个问题是关于什么的.

我想开发一个应用程序,它可以接收和返回这些消息,并尽可能保持一致(最好是低)延迟.我希望至少在几微秒内得到一致的延迟.为简单起见,我想在Windows或Linux等通用操作系统上执行此操作,但我愿意接受其他建议.除操作系统和我的测试应用程序外,机器上不会有其他负载(CPU或其他).
我想到了以下方法:
是否还有其他方法或框架可以做到这一点?还需要考虑什么才能获得一致且低延迟?建议采用什么方法?
最近我对lambda表达式和变量捕获有点奇怪.代码是使用.NET 4.5(VS2012)的WPF/MVVM应用程序.我正在使用我的viewmodel的不同构造函数来设置a的回调RelayCommand(此命令将绑定到我视图中的菜单项)
实质上,我有以下代码:
public class MyViewModel : ViewModelBase
{
public MyViewModel(Action menuCallback)
{
MyCommand = new RelayCommand(menuCallback);
}
public MyViewModel(Func<ViewModelBase> viewModelCreator)
// I also tried calling the other constructor, but the result was the same
// : this(() => SetMainContent(viewModelCreator())
{
Action action = () => SetMainContent(viewModelCreator());
MyCommand = new RelayCommand(action);
}
public ICommand MyCommand { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下方法创建上述实例:
// From some other viewmodel's code:
new MyViewModel(() => new SomeViewModel());
new MyViewModel(() => new SomeOtherViewModel()); …Run Code Online (Sandbox Code Playgroud) 我在拳击和拆箱方面有点困惑.根据其定义
Boxing是ValueTypes到引用类型(Object)的隐式转换.
UnBoxing是将引用类型(Object)显式转换为其等效的ValueTypes.
描述这个的最好例子是
int i = 123; object o = i; // boxing
Run Code Online (Sandbox Code Playgroud)
和
o = 123; i = (int)o; // unboxing
Run Code Online (Sandbox Code Playgroud)
但我的问题是int是否是值类型而字符串是引用类型
int i = 123; string s = i.ToString();
Run Code Online (Sandbox Code Playgroud)
和
s = "123"; i = (int)s;
Run Code Online (Sandbox Code Playgroud)
这是拳击和拆箱的例子吗?
我正在使用来自C++应用程序的SQLite(3.6.4)(使用标准的C api).我的问题是:一旦查询已经准备好,使用sqlite3_prepare_v2()和绑定参数使用sqlite3_bind_xyz()- 是否有任何方法可以获得包含原始SQL查询的字符串?
原因是当出现问题时,我想打印查询(用于调试 - 这是一个内部开发人员只有测试应用程序).
例:
sqlite3_prepare_v2(db, "SELECT * FROM xyz WHERE something = ? AND somethingelse = ?", -1, &myQuery, NULL);
sqlite3_bind_text(myQuery, 1, mySomething);
sqlite3_bind_text(myQuery, 2, mySomethingElse);
// ....
// somewhere else, in another function perhaps
if (sqlite3_step(myQuery) != SQLITE_OK)
{
// Here i'd like to print the actual query that failed - but I
// only have the myQuery variable
exit(-1);
}
Run Code Online (Sandbox Code Playgroud)
奖励点如果它还可以打印出绑定的实际参数.:)
我目前正在设计一些内部API,我使用Async CTP及其新await/ async关键字.
是否有关于如何设计这些API的指南或最佳实践?
特别:
Task DoStuffAsync() 和 void DoStuff()async Task<T> GetStuffAsync()(即方法名称的结尾Async)还是可以让某些名称 GetStuff()等待?我明白这里不是全黑或白,而是取决于所讨论的方法,但我正在寻找一般指导方针.