Tag: .net

是否定义了C#/ .NET签名的整数溢出行为?

在未经检查的上下文中,将一个加到一个值为2147483647的整数,保证导致-2147483648? 例如,使用以下代码 const int first = int.MaxValue; int second = first; if ( second >= first ) { Console.WriteLine( “First check” ); } second++; if ( second >= first ) { Console.WriteLine( “Second check” ); } 在C ++中,对于要打印的“First check”和“Second check”都是完全有效的,因为优化器可以重用第一次检查的结果。 C#也是如此吗?

在Windows XP下通过远程桌面渲染WPF有问题吗?

我听说Windows XP上的远程桌面不支持WPF原语。 这意味着,如果您在Vista机器上运行WPF应用程序并将其显示在XP机器上(通过远程桌面),则显示将作为压缩位图发送。 通过DirectX 11(?)在Vista-Vista通信中解决了这个问题,但这不会在XP上提供。 显然这里有性能影响,我想在开始向WPF开发应用程序之前了解它。 有关此主题的一些信息可在此处找到: http://blogs.msdn.com/tims/archive/2007/01/05/comparing-wpf-on-windows-vista-v-windows-xp.aspx 请参阅以上链接中的评论(引用): 对于SpongeJim的问题,这是由MIL(媒体集成层)完成的,它是处理组合的WPF的底层核心。 在Vista / Vista远程桌面连接上,MIL原语被远程处理,然后重新构建。 在其他组合(例如2003 / XP)上,远程处理的是位图,这显然是带宽密集的。 关于这个主题的更多深度可以在Greg Schechter的博客上找到,特别是在这个条目中: http : //blogs.msdn.com/greg_schechter/archive/2006/06/09/623566.aspx 有没有人对此问题有任何经验或更新的信息?

P / Invoke动态DLL搜索路径

我有一个现有的应用程序P / Invokes到一个DLL与应用程序本身驻留在同一目录中。 现在(由于佳能生产了最疯狂的API之一)我需要支持这个API的两个版本,并在运行时确定我应该使用哪个(旧的或新的)。 由于DLL具有相同的名称(第一个加载具有相同名称的其他DLL,因此只重命名第一个将无法帮助我)我必须将它们保存在不同的目录中。 因此我的问题是:我有什么选项来控制DllImport声明中给出的DLL使用的目录? 我想我可以尝试以下两个想法中的任何一个: 1)在执行第一个P / Invoke之前使用“SetDllDirectory”设置我想要的目录,然后重置它。 2)使用“LoadLibraryEx”手动加载所需的DLL,并希望这样做。 但是,有没有更多的“.NET:ish方式”首先尝试? 更新:我意识到我可以在两个单独的.Net程序集中填充对DLL的所有访问权限,然后将它们中的每一个放在与相应API文件相对应的单独目录中。 然后我可以动态加载正确的.Net程序集,并自动加载正确的DLL。 有什么理由不行吗? 我能想到一个:我将如何调试这些东西? 有可能告诉Visual Studio一个程序集(包含在我的解决方案中)应该放在一个子目录中并从那里进行调试吗?

绑定转换器作为内部类?

我有一个使用绑定转换器的UserControl。 我把转换器变成了一个内部类 public partial class MyPanel : UserControl { public class CornerRadiusConverter : IValueConverter { 如何从XAML引用Converter类? 以下不起作用: 它给出了这个错误: XML命名空间’clr-namespace:MyApp.Windows.Controls’中不存在标签’LensPanel.CornerRadiusConverter’

.Net中的字符串比较:“+”vs“ – ”

根据当前的文化,我总是假设.Net按字典顺序比较字符串。 但是当其中一个字符串以’ – ‘结尾时,有些奇怪: “+”.CompareTo(“-“) Returns: 1 “+1”.CompareTo(“-1”) Returns: -1 我得到了我尝试的所有文化,包括不变的文化。 任何人都可以解释发生了什么,我怎样才能获得当前语言环境的一致字符排序?

获取进程的所有窗口句柄

使用Microsoft Spy ++,我可以看到以下属于某个进程的窗口: 处理XYZ窗口句柄,以树forms显示,就像Spy ++一样,它给了我: A B C D E F G H I J K 我可以得到进程,MainWindowHandle属性指向窗口F的句柄。如果我使用枚举子窗口我可以得到G到K的窗口句柄列表,但我无法弄清楚如何找到窗口A到D的句柄。如何枚举不是Process对象的MainWindowHandle指定的句柄的子窗口? 要枚举我正在使用win32调用: [System.Runtime.InteropServices.DllImport(strUSER32DLL)] public static extern int EnumChildWindows(IntPtr hWnd, WindowCallBack pEnumWindowCallback, int iLParam);

Base64String和hex之间的转换

我在我的C ++ / CLI项目ToBase64String了一个字符串,如/MnwRx7kRZEQBxLZEkXndA==我想将此字符串转换为hex表示,如何在C ++ / CLI或C#中执行此操作?

如何在线路输入声音文件(麦克风)?

这个头衔可能看起来很荒谬,但我有问题。 我有Service capture line-in ,并将系统上的文件保存为声音文件(该服务不由我开发,我必须使用它)。 所以我想编写程序来选择声音文件(* .wav,* .mp3等),然后该声音文件将play on Line-in (Microphone) to record as user speech 。 问:那么在C#中如何做到这一点? 任何建议? 谢谢

需要一些建议来尝试模拟.NET WebClient或等效的

我有一些代码可以下载一些RSS源。 我一直在使用WebClient或Argotic.Syndication.RssFeed库。 但这些都不可模糊:( 我绝对不希望每次运行unit testing时都能看到真正的RSS提要。 有没有人对我能做什么有任何建议? 我需要创建一个邪恶的包装器吗? 如果是的话……对此有何建议?

使用Entity Framework和MySQL实现乐观并发

我目前正在使用Entity Framework 4.1和MySQL开发应用程序。 我想使用乐观并发,因此需要创建一个表结构,允许EF检测并发问题。 我的目标与此类似: http : //blogs.msdn.com/b/alexj/archive/2009/05/20/tip-19-how-to-use-optimistic-concurrency-in-the-entity- framework.aspx 。 我的问题是MySQL中的时间戳类型与MS SQL Server不同。 除此之外,时间戳和日期时间都不能提供MySQL的亚秒级精度(http://feedblog.org/2007/05/26/why-doesnt-mysql-support-millisecond-datetime-resolution/)。 因此,这些类型在检测并发性问题时会非常糟糕。 我可以用什么其他数据类型来解决这个问题? 我在考虑使用Guid。 但是这种方法存在两个潜在的问题:1。MySQL将Guids存储为char(36),使得效率非常低。 2.我不确定EF是否要求行版本严格增加,或者它是否足以让它独一无二。