Tag: .net 4.5

使用.NET框架读取串行端口的正确方法是什么?

我在这里阅读了很多关于如何使用.NET SerialPort类从串口读取数据的问题,但没有一种推荐的方法对我来说已经certificate是完全有效的。 这是我现在使用的代码: SerialPort port = new SerialPort(“COM1”); port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceivedHandler); 和事件处理程序: void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { int count = port.BytesToRead; byte[] ByteArray = new byte[count]; port.Read(ByteArray, 0, count); } 但有时候我仍然缺少一些数据。 我尝试过在事件处理程序中读取数据的不同方法,但没有运气。 由于.NET 4.5为执行某些异步任务带来了新的可能性,例如可能在SerialPort流上使用的ReadAsync方法,我很想知道处理这些情况的推荐方法是什么。

SignalR Typenamehandling

我试图让SignalR与自定义JsonSerializerSettings一起使用它的有效负载,特别是我试图设置TypeNameHandling = TypeNameHandling.Auto 。 问题似乎是,SignalR使用hubConnection.JsonSerializer和hubConnection.JsonSerializer GlobalHost.DependencyResolver.Resolve()作为其内部数据结构,然后导致各种破坏(当我设置TypeNameHandling.All时内部服务器崩溃)作为最粗鲁的例子,但是使用TypeNameHandling.Auto我也会遇到问题,特别是当涉及IProgress回调时)。 是否有任何解决方法或我只是做错了? 用于演示的示例代码: 服务器: class Program { static void Main(string[] args) { using (WebApp.Start(“http://localhost:8080”)) { Console.ReadLine(); } } } public class Startup { public void Configuration(IAppBuilder app) { var hubConfig = new HubConfiguration() { EnableDetailedErrors = true }; GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), ConverterSettings.GetSerializer); app.MapSignalR(hubConfig); } } public interface IFoo { string Val { […]

如何以编程方式检测Windows Phone 8.1操作系统版本?

标题中的问题不是真正的问题。 我浏览了很多网站和博客,并了解到Environment.OSVersion使用我们的应用程序为您提供了手机的当前操作系统版本。 但问题是,类环境下没有OSVersion。 请参阅屏幕截图以便更好地理解。 我的问题为什么我无法在Environment类下看到OSVersion属性? 我错过了什么吗? 所有建议和答案都赞赏。 谢谢!

使用async / await与DataReader? (没有中间缓冲区!)

我的目标很简单,我想做异步I / O调用(使用异步等待) – 但是: 不使用DataFlow依赖( 如在此答案中 ) 没有中间缓冲区( 不像这个答案 ) Projector函数应作为参数发送。 ( 不是这个答案 ) 好。 目前这里是我的代码,它的工作是从db读取并将每一行投影到Func public IEnumerable GetSomeData (string sql, Func projector) { using(SqlConnection _conn = new SqlConnection(@”Data Source=…”)) { using(SqlCommand _cmd = new SqlCommand(sql, _conn)) { _conn.Open(); _cmd.CommandTimeout = 100000; using(IDataReader rdr = _cmd.ExecuteReader()) { while (rdr.Read()) yield return projector(rdr); } } […]

‘await’运算符只能与异步lambda表达式一起使用

我正在尝试将文件列表复制到目录中。 我正在使用async / await。 但我一直在收到这个编译错误 ‘await’运算符只能在异步lambda表达式中使用。 考虑使用’async’修饰符标记此lambda表达式。 这就是我的代码 async Task CopyFilesToFolder(List fileList, IProgress progress, CancellationToken ct) { int totalCount = fileList.Count; int processCount = await Task.Run(() => { int tempCount = 0; foreach (var file in fileList) { string outputFile = Path.Combine(outputPath, file); await CopyFileAsync(file, outputFile); //<– ERROR: Compilation Error ct.ThrowIfCancellationRequested(); tempCount++; if (progress != […]

C#.net识别zip文件

我目前正在使用SharpZip api处理我的zip文件条目。 它适用于压缩和解压缩。 但是,我无法确定文件是否为zip文件。 我需要知道是否有办法检测文件流是否可以解压缩。 原来我用过 FileStream lFileStreamIn = File.OpenRead(mSourceFile); lZipFile = new ZipFile(lFileStreamIn); ZipInputStream lZipStreamTester = new ZipInputStream(lFileStreamIn, mBufferSize);// not working lZipStreamTester.Read(lBuffer, 0, 0); if (lZipStreamTester.CanDecompressEntry) { LZipStreamTester每次都变为null,if语句失败。 我尝试了/没有缓冲区。 谁能提供任何有关原因的见解? 我知道我可以检查文件扩展名。 我需要的东西比那更明确。 我也知道zip有一个神奇的#(PK的东西),但它不能保证它永远存在,因为它不是格式的要求。 另外我读到.net 4.5有本机zip支持所以我的项目可能会迁移到而不是sharpzip,但我仍然需要没有看到类似于CanDecompressEntry的方法/参数: http : //msdn.microsoft.com/en-我们/库/ 3z72378a%28V = vs.110 29% 我的最后一招是使用try catch并尝试解压缩文件。

Parallel.For(Foreach)将创建多少个线程? 默认MaxDegreeOfParallelism?

我想知道,当我运行Parallel.For / ForEach循环时将使用多少个线程。 我发现,它可以通过MaxDegreeOfParallelism选项进行更改。 MSDN上的MaxDegreeOfParallelism帮助说( 链接 ): 默认情况下,For和ForEach将使用底层调度程序提供的许multithreading,因此从默认值更改MaxDegreeOfParallelism仅限制将使用多少并发任务。 但我不知道调度程序提供了多少线程。 我该怎么知道呢? 我可以用9999999运行的循环测试它,但是这个测试会显示我的数字,但不会显示确定该数字的规则。 稍后编辑/添加: 我搜索了“sheduler max concurrency”,我发现(在MSDN – 链接 ), TashSheduler类具有MaximumConcurrencyLevel属性,并且: 返回表示最大并发级别的整数。 默认调度程序返回Int32.MaxValue。 TaskSheduler类是否用作这些并行循环的“底层调度程序”?

MVC4 .NET 4.5异步操作方法不重定向

我正在尝试在我的MVC 4应用程序中实现任务操作方法。 一切都在后面工作,但它没有重定向。 public class AccountController : AsyncController { [HttpPost] [AllowAnonymous] public async Task Login(LoginModel model, string returnUrl) { var client = new ClientHelper(“login”); account = await client.CallActionType(EnumHelpers.HttpType.Post, model); if (account != null) { validLogin = true; } return Redirect(returnUrl); // This is called but the page does not redirect, just sits a load } […]

WPF径向进度条/仪表(即电池表)

我正在开发适用于Windows 8.1和Windows Phone 8.1的Unified健身应用。 理想情况下,其中一个核心视图将包含每日进度表。 问题是我无法想出实际的仪表或仪表。 我想要的只是一个径向进度条或类似于Windows Phone商店中常见电池应用中的电池电量表/米的东西。 据我所知,WPF / VS 2013不提供开箱即用的这种组件。 我知道Telerik和其他一些第三方提供类似的东西,但我更喜欢使用开源的东西或自己构建它。 有没有人知道与.NET 4.5和WPF一起使用的较新的开源组件,或者有关于如何构建自己的组件的示例? 到目前为止,我发现的与此链接类似: WPF的量表 但我希望使用类似的东西:

UserPrincipal.FindByIdentity中的.NET 4.5错误(System.DirectoryServices.AccountManagement)

在.NET 4.5下测试我们的.NET 4.0应用程序时,我们遇到了FindByIdentity方法的UserPrincipal 。 以下代码在.NET 4.0运行时运行时有效,但在.NET 4.5下失败: [Test] public void TestIsAccountLockedOut() { const string activeDirectoryServer = “MyActiveDirectoryServer”; const string activeDirectoryLogin = “MyADAccount@MyDomain”; const string activeDirectoryPassword = “MyADAccountPassword”; const string userAccountToTest = “TestUser@MyDomain”; const string userPasswordToTest = “WRONGPASSWORD”; var principalContext = new PrincipalContext(ContextType.Domain, activeDirectoryServer, activeDirectoryLogin, activeDirectoryPassword); var isAccountLockedOut = false; var isAuthenticated = principalContext.ValidateCredentials(userAccountToTest, userPasswordToTest, principalContext.Options); […]