Image.FromStream使用networkStream

我正在尝试使用类Image的FromStream方法来设置使用网络流通过tcp连接接收的图像。 这里有双方代码: 服务器: TcpListener server = new TcpListener(IPAddress.Any, 34567); server.Start(); TcpClient client = server.AcceptTcpClient(); byte[] buffer = new byte[256]; int n = 0; Console.WriteLine(“{0}, {1}”, Encoding.ASCII.GetString(buffer, 0, n), client.Client.RemoteEndPoint); byte[] img = File.ReadAllBytes(@”C:\Users\Luca\Desktop\video grest\8599929-nessun-segnale.jpg”); client.Client.Send(img); 客户: TcpClient tcp = new TcpClient(“127.0.0.1”, 34567); NetworkStream stream = tcp.GetStream(); MessageBox.Show(“fatto”); pictureBox1.Image = Image.FromStream(stream); 问题是客户端程序在最后一条指令上停止并且它没有前进,如果关闭服务器(甚至30分钟后),它表示连接已关闭但是图片框没有显示任何内容……为什么? 提前致谢。

是否在C#中公开实施LZSS压缩或可以在C#中使用?

我正在寻找LZSS来解码来自游戏引擎的一些数据包。 如果有人能指我到图书馆,我会非常高兴。 谢谢!

当给定的文化不知道格式时,Convert.ToDateTime()如何解析给定的字符串

我有以下代码,它的工作原理。 string testDateStr = “2009.7.28 05:23:15”; DateTime testDateObj = Convert.ToDateTime(testDateStr, CultureInfo.GetCultureInfo(“fr-FR”)); 我检查了我的文化的有效格式: string[] validFormats = testDateObj.GetDateTimeFormats(CultureInfo.GetCultureInfo(“fr-FR”)); 并且它们都不符合“2009.7.28 05:23:15”格式。 我想知道如何在不抛出格式exception的情况下对其进行解析,以及在调用Convert.ToDateTime()时执行何种隐藏解析。 更新:在LakshmiNarayanan的回答后我尝试了以下内容。 foreach(var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) { foreach(var format in testDateObj.GetDateTimeFormats(culture)) { if (format == testDateStr) { Console.WriteLine(culture.DisplayName); } } } 有些文化实际上包含了我的字符串所在的格式,但仍然无法解释为什么当我们要求它使用特定文化进行转换时它不会抛出exception,而该文化不知道字符串所在的格式。

为什么DataTemplate.LoadContent()不尊重模板定义的触发器?

TL-DR版本: 我们试图找出触发器生效的DataTemplate的自动应用与手动调用触发器无效的DataTemplate.LoadContent()之间的区别。 现在细节…… 但首先,我首先要说的是,这个问题是为了帮助我们理解框架及其在内部所做的工作,因此,相关代码严格来说明问题本身,并不代表我们的实际代码。 正如他们所说,它仅用于说明目的。 (只是试图避免不可避免的’我不明白你想要做什么’或’那不是我会怎么做’的回应。再一次,它只是为了支持这个问题。希望这是有道理的。) 也就是说,考虑这个XAML定义一个String的DataTemplate有两个触发器(每个触发器都针对不同的元素)…… xmlns:system=”clr-namespace:System;assembly=mscorlib” … 然后在XAML中该模板在范围内的另一个位置,我们有… ……按预期工作。 在代码中,我们可以像这样访问扩展模板(Border)的根元素… var expandedTemplateRootElement = VisualTreeHelper.GetChild(TestPresenter, 0) as FrameworkElement; ……但触发器的应用方式和位置如何? 它们显然有效,但expandTemplateRootElement.Triggers.Count和TestPresenter.Triggers.Count都返回零。 正如问题标题中所述,如果我们尝试手动扩展DataTemplate中的内容,就像这样…… var rawContents = “Show me the money!”; var dataTemplateToUse = TestPresenter.FindResource(new DataTemplateKey(rawContents.GetType())); var expandedTemplateRootElement = dataTemplateToUse.LoadContent() as FrameworkElement; expandedTemplateRootElement.DataContext = rawContents; SomeOtherPresenter.Contents = expandedTemplateRootElement; …虽然这确实在第二个ContentPresenter中显示了Border和TextBlock(在这里称为SomeOtherPresenter),而dataTemplateToUse.Triggers 确实显示了两个已定义,但它们不起作用! 我想知道 a)为什么不,和 b)如何启用/应用它们。 当然,“作弊”只是简单地启动新的ContentPresenter,设置其内容,然后将其ContentTemplate设置为相关的DataTemplate。 然后你可以把整个东西塞进另一个ContentPresenter中,让框架担心细节,比如这…… var rawContents […]

字符串参数’migrationId’不能为空

如果这已经得到回答,请提前道歉,但我诚实地深挖并找不到与此错误有关的任何内容。 简而言之,我无法使用ASP.NET Core 1.1.2项目中的代码对我的数据库进行任何更新。 这是一个例外,因为它错过了一个我认为不与PMC有关的论点。 使用“更新数据库”时出现错误消息: 用于交叉检查Google的文字;-) System.ArgumentException: The string argument ‘migrationId’ cannot be empty. at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName) at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations() at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_1.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) The string argument ‘migrationId’ cannot be empty. Migrations文件夹与我的’_EFMigrationsHistory’表相同(忽略计划更新的上次迁移): 我甚至已经删除了迁移文件夹和’_EFMigrationsHistory’表并再次启动,这表示同样的错误。 我也打算测试’v2.0.0-preview2-final’以防它是一个bug,但遗憾的是我的VS版只需要发布版本,显然你需要15.3。 版本信息: Visual Studio Enterprise 2017 – 15.2(26430.16)发布 entity framework核心v1.1.2 ASP.NET […]

Datagridview需要隐藏Scrollbar,但滚动应该可以通过代码实现

我有2个具有相同列数的Datagrids Datagrid1只显示标题, Datagrid2就在它下方,显示所有数据。 实质上,2个网格需要同步才能显示为1个网格。 我的问题是我需要隐藏datagrid1的水平滚动条,但只显示datagrid1滚动条。 当用户滚动datagrid2 ,我需要以编程方式同步datagrid1上的标头。 谁有人建议?

动态构建表达式树

我正在关注这个优秀的例子: 将Linq转换为Sql表达式到表达式树 在我的情况下,我正在尝试构建一个表达式树,其中要过滤的类型仅在运行时已知,并表示为字符串。 在上面的示例中,类型Region已知并直接键入: ParameterExpression pe = Expression.Parameter(typeof(Region), “region”); 在我的应用程序中,我已经能够将其重写为: ParameterExpression pe = Expression.Parameter(Type.GetType(“mystring”), “listData”); 我的绊脚石就是这个例子: MethodCallExpression whereCallExpression = Expression.Call( typeof(Queryable), “Where”, new Type[] { query.ElementType }, query.Expression, Expression.Lambda<Func>(e3, new ParameterExpression[] { pe })); var results = query.Provider.CreateQuery(whereCallExpression); 在这两行中, Region是直接键入的。 有没有办法动态使用字符串“Region”来实现同样的事情?

通过C#SqlCommand执行合并语句不起作用

我正在尝试使用临时表和MERGE语句通过C#中的SqlCommand对象更新SQL表。 我正在处理的程序旨在首先将一组非常大的记录(超过20k +)导出到Excel电子表格中。 然后,用户能够搜索并替换特定值,并在他们喜欢的记录中更新尽可能多的字段。 我正在尝试的是获取该电子表格,使用它填充DataTable ,然后使用SqlBulkCopy使用DataTable填充临时SQL表。 然后,如果行仍存在于数据库中,则使用MERGE语句更新行。 但是,我遇到的问题是我在ZipCodeTerritory表上的唯一约束一直被触发给我以下错误消息: 无法在对象’dbo.ZipCodeTerritory’中插入具有唯一索引’UQ_ChannelStateEndDateZipCodeISNULL’的重复键行。 重复键值为(9,CA,94351,9999-12-31)。 这使我相信某种方式UPDATE语句没有被执行或者我在某种程度上使用ON关键字错误地加入了表中的表。 唯一约束仅在INSERT语句期间触发,或者在ChannelCode , StateCode , ZipCode或EndDate字段的UPDATE期间触发。 我正在对IndDistrnId字段进行批量更新,并彻底检查了电子表格。 再次,这是我尝试这种技术的第一次尝试,所以任何帮助/建议将不胜感激。 谢谢 C# private static string updateCommand = “UPDATE SET Target.ChannelCode = Source.ChannelCode, Target.DrmTerrDesc = Source.DrmTerrDesc, Target.IndDistrnId = Source.IndDistrnId,” + “Target.StateCode = Source.StateCode, Target.ZipCode = Source.ZipCode, Target.EndDate = Source.EndDate, Target.EffectiveDate = Source.EffectiveDate,” + “Target.LastUpdateId = Source.LastUpdateId, Target.LastUpdateDate = […]

无法将索引应用于“T”类型的表达式

我已经创建了一个通用的方法 public void BindRecordSet(IEnumerable coll1, string propertyName) where T : class 在我的class级’T’我写了索引器 public object this[string propertyName] { get { Type t = typeof(SecUserFTSResult); PropertyInfo pi = t.GetProperty(propertyName); return pi.GetValue(this, null); } set { Type t = typeof(SecUserFTSResult); PropertyInfo pi = t.GetProperty(propertyName); pi.SetValue(this, value, null); } } 现在在我的方法当我写代码时 var result = ((T[])(coll1.Result))[0]; string result= secFTSResult[propertyName]; 我收到错误无法将索引应用于’T’类型的表达式 […]

使用WebDAV和C#阅读电子邮件的主题和正文

我使用Microsoft的这个示例来阅读使用WebDAV的电子邮件主题。 我也想读一下身体,但我不确定如何处理这个问题。 我相信这段代码需要修改: strQuery = “” + “SELECT \”DAV:displayname\” FROM \”” + strRootURI + “\”” + “WHERE \”DAV:ishidden\” = false AND \”DAV:isfolder\” = false” + “”; 如您所见,此代码仅返回对象的显示名称。 如何修改以恢复身体?