Tag: .net

.Net Core MySql

我刚刚在Ubuntu 14.04.4上开始使用.NET Core编写Visual Studio代码。我习惯于使用Ubuntu(来自个人兴趣,爱好等)以及.NET和Visual Studio。 但我遇到了一个似乎无法克服的问题。 我正在构建一个我想与MySql Server通信的小型控制台应用程序,但我似乎无法使MySql.ConnectorNET.Data正常工作。 它是用命令dnu install MySql.ConnectorNET.Data而且似乎工作正常。 在project.json文件中添加了依赖项,并且intellisense能够正常遍历包,但OmniSharp Log报告: [INFORMATION:OmniSharp.Dnx.DnxProjectSystem] Project /home//VSCode/SimpleSQLatmpt/project.json has these unresolved references: MySql.ConnectorNET.Data 而我似乎无法解决这个问题。 VSCode似乎检测到它,并要求我运行dnu restore命令。 但这无济于事。 出于所有目的和目的,似乎MySql.ConnectorNET.Data在项目中可用,但是不能使用。 谁能告诉我如何解决这个问题? 同样重要的是,为什么它首先发生? 非常感谢您的宝贵时间。

如何获得ListView项的高度?

我有ListView,我需要确定项目高度。

为什么后续的直接方法调用比第一次调用要快得多?

正如本MSDN文章中所解释的,当使用.NET Reflection API(例如InvokeMember ,由于元数据的缓存,第一次调用比后续调用花费更多时间。 当我在不使用Reflection的情况下测试直接方法调用时,我也看到了对Mono和.NET 4的类似效果。 第一个数字是操作的结果,“ – ”后面的第二个数字是以ms为单位的此操作所花费的时间。 我使用'< – '标记来标识第一个方法调用。 300 – 0.192 <– 300 – 0.004 300 – 0.004 -100 – 0.096 <– -100 – 0.004 -100 – 0.004 为什么是这样? 我可以理解第一次调用可能比较慢,但速度慢50倍并不是我的预期。 附件是获得此结果的源代码。 图书馆 namespace MyClass { public class Calculator { public int Value1 {get; set;} public int Value2 {get; set;} public Calculator() […]

SortedList / SortedDictionary奇怪的行为

任何人都可以解释为什么这个代码: Dim Data As New SortedList(StringComparer.InvariantCultureIgnoreCase) Data.Add(“AB”, 48) Data.Add(“AC”, 48) Data.Add(“AD”, 48) Data.Add(“A-“, 48) 按以下顺序生成排序列表: A- AB AC AD 预期(逻辑和真正想要的)订单是: A- AD AB AC

由于AcceptSocket,Thread.Abort似乎没有抛出ThreadAbortException

我在下面的线程上调用ChannelServer.ListeningThread.Abort ,但似乎没有任何事情发生。 我想更具体一点,但我想不出更多。 似乎没有抛出ThreadAbortException ,并且无论阻塞侦听器如何都应抛出此exception(它在阻塞接收的线程上完美运行)。 重要编辑 :使用ManualResetEvent.WaitOne而不是AcceptSocket ,正如Lyrik建议进行测试一样,它完美无缺。 为什么AcceptSocket阻止ThreadAbortException ? 链接 :这个论坛主题似乎讨论了同样的问题,虽然我无法解决任何问题: http : //www.tek-tips.com/viewthread.cfm?qid = 319436&page = 413 ChannelServer.ListeningThread = new Thread(new ThreadStart(delegate() { Log.Inform(“Waiting for clients on thread {0}.”, Thread.CurrentThread.ManagedThreadId); while (true) { try { new Thread(new ParameterizedThreadStart(ChannelClientHandler.Initialize)).Start(ChannelServer.Listener.AcceptSocket()); } catch (ThreadAbortException) { Log.Inform(“Aborted client listening thread {0}.”, Thread.CurrentThread.ManagedThreadId); break; } } })); ChannelServer.ListeningThread.Start();

是否可以将同一assembly的不同版本引用到单个项目中?

在我的解决方案中,我有几个使用Log4Net(1.2和2.5)的项目。 然后我有一个项目,我在那里进行所有unit testing(其他项目)。 所以我的情况取决于我测试/模拟我需要Log4Net 1.2或2.5。 我读过你可以在应用程序中支持不同版本的单个程序集(使用代码库等),但是甚至可以将单个程序集的不同版本支持到项目中吗? 如果是这样,怎么样? 编辑: 这是一个很小的(2个类,2个方法,2个构造函数)项目,显示了我的问题: https://srv-file1.gofile.io/download/EQFdOs/212.76.254.142/Log4NetMulti.zip (我希望链接工作)

Bitmap.LockBits是否将位图“固定”到内存中?

我最近使用锁定的位图,并且一直“试图访问无效内存”错误。 这主要是因为位图已在内存中移动。 有些人使用GCHandle.Alloc()在CLR中分配内存并固定它。 Bitmap.LockBits()也这样做吗? 我不明白“锁定”内存和“固定”内存之间的区别。 你能解释术语和差异吗?

LINQ to SQL选择多列不同并返回整个实体

我正在使用第三方数据库,需要为我正在研究的特定市场选择一组不同的数据。 每个市场的数据都是相同的,因此将其全部用完是多余的,我不想硬编码任何逻辑,因为我们正在与供应商合作解决问题,但我们需要一个修复与供应商一起修复以及数据库当前的方式,因为它可能需要一段时间才能进行修复。 我不希望按任何方式进行分组,因为我想在最低级别获取数据,但我不想要任何冗余数据。 我当前的查询看起来与此类似…… determinantData = (from x in dbContext.Datas where x.Bar.Name.Equals(barName) && x.Something.Name.Equals(someName) && FooIds.Contains(x.Foo.Id) && x.Date >= startDate && x.Date <= endDate select x).Distinct(); 这不符合我的预期。 我想通过三个属性选择不同的记录,比如Foo , Bar和Something但返回整个对象。 我怎么能用LINQ做到这一点?

并且还在几个Expression <Func >之间:从范围引用

我有3个谓词,我想在AndAlso之间做一个AndAlso 。 我在板上发现了几个样本,但无法解决我的问题。 这些谓词是: Expression<Func> 我有这个代码: Expression<Func> predicate1 = ……; Expression<Func> predicate2 = ……; Expression<Func> predicate3 = ……; 我创建了一个扩展方法来创建一个“AndAlso”: public static Expression<Func> AndAlso( this Expression<Func> expr, Expression<Func> exprAdd) { var param = Expression.Parameter(typeof(T), “p”); var predicateBody = Expression.AndAlso(expr.Body, exprAdd.Body); return Expression.Lambda<Func>(predicateBody, param); //Tried this too //var body = Expression.AndAlso(expr.Body, exprAdd.Body); //return Expression.Lambda<Func>(body, expr.Parameters[0]); } 我这样用: […]

JSON.NET部分更新Rest API客户端

我正在使用JSON.NET为REST API构建C#/ .NET 4.5客户端。 API支持部分更新; 因此,更新中json中存在或缺少属性具有意义。 如果属性在json中,则服务器将相应地设置该值; 该属性未传递服务器将不会更新它。 这也适用于空值。 我为每个模型都有.NET类; 具有每个JSON属性的属性(非常标准)。 举个例子,假设我有一个已存在于服务器上的帐户对象(名称,备注): { ‘name’:’craig’, ‘notes:’these are notes’ } 如果我传入此json进行更新,它将更新名称,但会将注释设置为“这些是注释”: var account = api.GetAccount(); account.Name = “bob”; api.UpdateAccount(account); { ‘name’:’bob’ } 如果我将此json传递给更新,它将在服务器上将名称和注释设置为null: var account = api.GetAccount(); account.Name = “bob”; account.Notes = null; api.UpdateAccount(account); { ‘name’:’bob’, ‘notes’:null } 到目前为止一切都很好。 我的问题是如何让JSON.NET与它一起很好地发挥作用。 JSON.NET允许控制NullValueHandling,它基本上表示是否应该序列化null值。 然而,在这种情况下这还不够。 我需要能够确定调用代码是否显式将值设置为null。 有没有推荐的方法来处理这个? 我尝试使用我的模型内部的Dictionary来存储要通过JSON序列化的属性。 这允许我通过字典中的键的存在来判断属性是否已被设置为任何(包括null)。 我发现这种方法有一些困难,我最终重写了许多JSON.NET标准的代码(类型序列化,generics,nullables,枚举……)。 […]