2009-02-27 49 views
6

我正在处理C#中的WriteableBitmap。我目前使用不安全的代码块,通过WriteableBitmap.BackBuffer直接访问像素。我宁愿不依赖/unsafe选项,但是,我正在考虑使用WriteableBitmap.WritePixels来代替。是否存在与/ unsafe标志对应的“预处理器”符号?

有没有在“不安全”的版本有条件编译一些方式,使得它可以被用于编译的/不安全的选项时使用,而无需手动集成到我的项目文件?

总之我要找的线沿线的东西:

#if UNSAFE 
    //my unsafe version 
#else 
    //the supposedly safe version goes here 
#endif 

检测在运行时环境也不错;但这意味着我总是需要编译/unsafe,这意味着该库的代码需要的项目文件更新,这是不太方便的。

基本上,我想保持了在关键时刻快速版本,但有一个合理的版本,只是工作不管。

回答

4

我建议您使用配置管理器创建一个或多个新配置,比如说“Unsafe Debug”和“Unsafe Release”,它们具有现有选项,并选中Unsafe并添加UNSAFE的条件符号。不用切换不安全选项,您可以使用不安全配置。

您也可以通过配置更改不安全程序集的输出名称,以便您拥有两个程序集,例如Bitmaps.dll和Bitmaps.Unsafe.dll,并且程序集的客户端可以决定哪个程序最适合其需求指定它引用的程序集。

+0

这(就像配置的建议)确实看起来相当可行的,谢谢! – 2009-02-28 09:40:47

1

我建议你用/unsafe /define:SAFE编译。也许还有另一种我不知道的方式。

0

我想你可以试试这个代码

#define UNSAFE 
#undef UNSAFE // comment this line out if you want to compile the save version 

然后你就可以使用代码就像你在你的榜样了。