Tag: C#的

Visual Studio 2015更新3 – C ++编译器错误?

我们观察到一个奇怪的情况,在VS2015 Update3编译器中将会忽略部分代码,原因不明。 我们发现了这一点 这发生在VS2015 Update3(帮助|关于说14.0.25431.01更新3,cl.exe版本19.00.24215.1) 这不会发生在VS2015 Update2(帮助|关于说14.0.25123.00更新2,cl.exe版本19.00.23918) 只有打开优化时才会发生这种情况(例如,在默认的“发行”configuration中) 在x86和x64中都会发生 将代码片段插入全新的“Win32控制台应用程序”(我的意思是,没有花哨的命令行选项要求) 我们设法最小化这个片段的罪魁祸首代码: #include <stdio.h> #include <tchar.h> #include <stdlib.h> int _tmain(int, _TCHAR*[]) { volatile int someVar = 1; const int indexOffset = someVar ? 0 : 1; // Loop omitted // const int indexOffset = !someVar; // Loop omitted // const int indexOffset = 0; // Good […]

用于embedded式设备的良好串行通信协议/堆栈?

在为不同的项目编写几个不同的自定义串行协议之后,我开始对重新发明轮子感到沮丧。 为了继续为每个项目开发定制的解决scheme,我一直在寻找更通用的解决scheme。 我想知道是否有人知道满足以下要求的串行协议(或更好的实现): 支持多种设备。 我们希望能够支持一个RS485总线。 保证交付。 某种确认机制,以及一些简单的错误检测(CRC16可能是好的)。 不是主/从。 理想情况下,从机可以asynchronous发送数据。 这主要是出于美学的原因,投票每个奴隶的概念不适合我。 OS独立性。 理想情况下,它不会依赖于抢先式的多任务处理环境。 我愿意承认这一点,如果我能得到其他的东西。 ANSI C我们需要能够编译几个不同的体系结构。 速度不是太大的问题,我们愿意放弃一些速度,以满足其他一些需求。 但是,我们希望尽量减less所需资源的数量。 我即将开始实施滑动窗口协议与piggybacked ACK并没有select性的重复,但认为也许有人可以救我这个麻烦。 有谁知道现有的项目,我可以利用? 或者更好的策略? UPDATE 我认真考虑过一个TCP / IP的实现,但真的希望有更轻量级的东西。 TCP / IP的许多function对于我正在尝试做的事情来说都是过度的。 我愿意接受(勉强),也许我想要的function不包括在较轻的协议中。 更新2 感谢CAN上的提示。 我曾经看过,未来可能会用到它。 我真的很喜欢图书馆处理确认,缓冲,重试等。 我想我更多的是寻找一个networking/传输层,而不是数据链/物理层。 更新3 所以这听起来像这个领域的艺术状态是: 裁减的TCP / IP堆栈。 可能从诸如lwIP或uIP之类的东西开始。 一个基于CAN的实现,它可能很大程度上依赖于CAN总线,所以它在其他物理层上将不会有用。 CAN节日可以帮助你。 一个HDLC或SDLC实现(就像这个一样)。 这可能是我们要采取的路线。 如果您遇到此问题,请随时发布更多的答案。

捕获的.NETexception是意外的空

请参阅下面的说明正在发生的事情 我有一个非常奇怪的问题,捕获的exception是null。 代码使用MEF并尽力报告组合错误。 使用debugging器,我可以看到抛出的exception( InvalidOperationException ),但是当它被下面的代码中的最后一个catch块捕获时, exvariables为null。 在debugging器和正常执行代码时都是如此。 static T ResolveWithErrorHandling<T>() where T : class { try { IocContainer.Compose(Settings.Default.IocConfiguration); return IocContainer.Resolve<T>(); } catch (ReflectionTypeLoadException ex) { // … special error reporting for ReflectionTypeLoadException } catch (Exception ex) { // ex is null – that should not be possible! // … general error reporting for other […]

从一个没有ONE字段的entityframework中检索一个对象

我正在使用entity framework来连接数据库。 我有一个小问题: 我有一个表有一个varbinary(MAX)列(文件stream)。 我使用SQL请求来pipe理“数据”部分,但其余的EF(文件的元数据)。 我有一个代码,必须获得文件的所有文件ID,文件名,GUID,修改date…。 这根本不需要“数据”字段。 有没有办法检索一个列表,但没有填写这个列? 就像是 context.Files.Where(f=>f.xyz).Exclude(f=>f.Data).ToList(); ?? 我知道我可以创build匿名对象,但是我需要将结果传递给一个方法,所以没有匿名方法。 我不想把它放在一个匿名types列表中,然后创build一个非匿名types(File)的列表。 目标是避免这种情况: using(RsSolutionsEntities context = new RsSolutionsEntities()) { var file = context.Files .Where(f => f.Id == idFile) .Select(f => new { f.Id, f.MimeType, f.Size, f.FileName, f.DataType, f.DateModification, f.FileId }).FirstOrDefault(); return new File() { DataType = file.DataType, DateModification = file.DateModification, FileId = file.FileId, FileName […]

微软图表,MVC 3和剃刀

相关主题我想知道是否有人使用Microsoft MVC 3和Razor的微软图表库。 我知道介绍新的图表助手,但由于这是非常有限的,这不是一个真正的select。 创build一个返回图像的动作方法也很简单,但是由于所有的交互性都被打破了(即使是简单的条形图中的条形工具提示),这种方法也有一些限制。 这个例子可能是我find的最有帮助的文章,但我仍然不能得到一个简单的图表工作,即使它只在一个操作方法渲染图像时工作。 另外,我已经得到了在.net 4下正常工作的样本,但显然那些不是MVC样本。 所以,有没有人得到微软图表完全在Asp MVC 3与剃刀工作,并可以链接到一个完整的解决scheme?

我需要在C程序中编译头文件吗?

有时候我看到有人编译一个像这样的C程序: gcc -o hello hello.c hello.h 据我所知,我们只需要把头文件放到C程序中就好: #include "somefile" 并编译C程序: gcc -o hello hello.c 。 我们什么时候需要编译头文件或者为什么?

RyuJit产生不正确的结果

在最近升级到.net 4.6之后,我们发现了一个错误,RyuJit产生了不正确的结果,现在我们可以通过在app.config中添加useLegacyJit enabled =“true”来解决这个问题。 我怎样才能debugging由以下产生的机器码? 我在VS 2015 RTM中创build了一个新的控制台项目,设置为释放,任何CPU,未选中首选32位,运行有和没有debugging器连接产生相同的结果。 using System; using System.Runtime.CompilerServices; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine(Calculate()); Console.WriteLine(Calculate()); Console.ReadLine(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Value Calculate() { bool? _0 = (bool?)null; bool? _1 = (bool?)true; if (!Value.IsPresent<bool>(_1)) { return default(Value); } bool? result = null; result = (_1.Value ? […]

有一种方法可以在C中进行curl吗?

假设我有一个指向函数_stack_push(stack* stk, void* el)的指针。 我希望能够调用curry(_stack_push, my_stack)并取回一个只需要void* el的函数。 我想不出有办法做到这一点,因为C不允许运行时函数的定义,但我知道在这里有比我更聪明的人:)。 有任何想法吗?

Unix套接字,SOCK_SEQPACKET与SOCK_DGRAM

看来有至less3种不同的本地/ Unixsocketstypes(PF_UNIX),SOCK_STREAM,SOCK_DGRAM和SOCK_SEQPACKET。 虽然我知道一个SOCK_STREAM给你一个双向字节stream,如TCP或双向pipe道,而另外两个给你一个messge / packet API,SOCK_DGRAM和SOCK_SEQPACKET的unix套接字有什么区别? 由于这些只是本地的,我想不出有什么好的理由来实现SOCK_DGRAM的方式,它可以重新sorting数据包。 此外,SOCK_DGRAM / SOCK_SEQPACKET是否采用stream量控制,或者在读取缓慢的情况下可以丢弃消息?

C#线程池限制线程

好的…我已经给了这个网站一个公平的search,并且阅读了很多关于这个主题的文章。 我发现这个问题: 在C#中的简单线程池代码特别有用。 不过,就像看起来一样,我需要的东西稍有不同。 我已经看了MSDN的例子,并适应了我的需求。 我提到的例子是在这里: http : //msdn.microsoft.com/en-us/library/3dasc8as(VS.80,printer).aspx 我的问题是这个。 我有一个相当简单的代码集,通过HttpWebRequest和WebResponse类加载网页,并通过Stream读取结果。 我在线程中引发这个方法,因为它需要执行很多次。 该方法本身很短,但它需要被触发的次数(每次不同的数据)是不同的。 它可以是从1到200的任何地方。 我读过的所有东西似乎都表明ThreadPool类是主要的候选者。 这是棘手的事情。 我可能需要说这个东西说100次,但我最多只能有3个线程运行(为这个特定的任务)。 我已经尝试通过设置ThreadPool上的MaxThreads : ThreadPool.SetMaxThreads(3, 3); 我不完全相信这种方法正在工作。 此外,我不想闯入系统上运行的其他网站或程序,这将运行。 所以,通过限制ThreadPool上的ThreadPool ,我可以确定这只适用于我的代码和我的线程吗? MSDN示例使用事件驱动方法并调用WaitHandle.WaitAll(doneEvents); 这是我如何做到这一点。 所以我的问题的核心是,如何确保或指定可以为其代码运行的线程的最大数量,但代码继续运行更多的线程,因为以前的完成,直到任意点? 我正确的解决这个问题吗? 此致 贾森 好吧,我已经添加了一个信号量方法,并完全删除了ThreadPool代码。 这似乎很简单。 我从我的信息: http : //www.albahari.com/threading/part2.aspx 这个例子向我展示了如何: [下面的文本是从网站复制/粘贴] 一个容量为1的Semaphore与一个Mutex或lock相似,只是Semaphore没有“所有者” – 它是线程无关的。 任何线程都可以在Semaphore上调用Release ,而在使用Mutex和lock ,只有获取资源的线程才能释放它。 在下面的例子中,十个线程在中间执行一个Sleep语句的循环。 Semaphore确保一次不超过三个线程可以执行该Sleep语句: class SemaphoreTest { static Semaphore s = new […]