小编Tom*_*ell的帖子

使用.net 4.5中的Async API对串口通信代码进行示例?

有人能指出我使用.net 4.5异步API(异步,等待,任务<>,ReadAsync等)进行串行通信的工作示例吗?

我试图调整现有的事件驱动的串行样本,并且得到各种可怕的行为 - "其他应用程序使用的端口"错误,VS2013调试器抛出异常和锁定 - 这通常需要PC重启才能从中恢复.

编辑

我从头开始编写自己的样本.这是一个简单的Winforms项目,它写入Output窗口.表单上的三个按钮 - 打开端口,关闭端口和读取数据.ReadDataAsync方法调用SerialPort.BaseStream.ReadAsync.

截至目前,它将从端口读取数据,但我遇到了使其变得强大的问题.

例如,如果我拔下串行电缆,打开端口,然后单击Read Data两次,我将得到一个System.IO.IOException(我有点期待),但我的应用程序停止响应.

更糟糕的是,当我尝试停止我的程序时,VS2013会抛出一个"正在进行停止调试"对话框,该对话框永远不会完成,我甚至无法从任务管理器中删除VS. 每次发生这种情况都必须重启我的电脑.

不好.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO.Ports;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private SerialPort _serialPort;

        public Form1()
        {
            InitializeComponent();
        }

        private void openPortbutton_Click(object sender, EventArgs e)
        {
                try
                {
                    if (_serialPort == null )
                        _serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);

                    if (!_serialPort.IsOpen)
                        _serialPort.Open(); …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous serial-port async-await

5
推荐指数
1
解决办法
2万
查看次数

NHibernate 3.2 - 现在所有属性都需要"set"方法吗?

我们最近将Automapped FNH/NH项目升级到NH 3.2,并遇到了很多问题.

我们的对象模型中有很多属性,只有"getter",例如

    public virtual float Polydispersity
    {
        get { return MeasurementRun.PolyDispersity; }
    }
Run Code Online (Sandbox Code Playgroud)

这曾经工作正常,但现在我们得到"找不到属性的setter"错误.

这很难找到,因为由于某种原因,自动化无法创建数据库表,导致在保存到数据库时出现"无持久性"错误 - 请参阅此处了解详细信息.

这是因为LinFu现在已经建成了NH?我知道私人制定者不再有效,这似乎也是一个类似的问题.

我们曾经使用Castle,我真的很喜欢NH现在不需要所有其他DLL,但如果它破坏了我们对象模型的很大一部分,那就不行了.

有关如何绕过这个的任何建议?

堆栈跟踪

FluentNHibernate.Cfg.FluentConfigurationException:创建SessionFactory时使用了无效或不完整的配置.检查PotentialReasons集合,以及InnerException以获取更多详细信息.

---> NHibernate.PropertyNotFoundException:在NHibernate.Mapping.Property.GetSetter(NHibernate.Mapping.Property.GetSetter)的NHibernate.Properties.BasicPropertyAccessor.GetSetter(Type type,String propertyName)的类'BI_OverlordDlsAppCore.OfeDlsMeasurement'中找不到属性'Polydispersity'的setter clazz所)在NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildPropertySetter(物业mappedProperty,对PersistentClass mappedEntity)在NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(entityMetamodel entityMetamodel,对PersistentClass mappingInfo)在NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(entityMetamodel在NHibernate.Tuple.EntityMetamode.EntityEntityModeToTuplizerMapping..ctor(PersistentClass mappedEntity,EntityMetamodel em)的NHibernate.Tuple.EntityMetamodel..ctor(PersistentClass persistentClass,ISessionFactoryImplementor sessionFactory)NHibernate.Persister.Entity.AbstractEntityPersister中的entityMetamodel,PersistentClass mappedEntity. .ctor(PersistentClass persistentClass,ICacheConcurrencyStr ategy缓存,ISessionFactoryImplementor工厂)在NHibernate.Persister.Entity.JoinedSubclassEntityPersister..ctor(对PersistentClass对PersistentClass,ICacheConcurrencyStrategy缓存,ISessionFactoryImplementor工厂,IMapping映射)在NHibernate.Persister.PersisterFactory.CreateClassPersister(模型对PersistentClass,ICacheConcurrencyStrategy缓存,ISessionFactoryImplementor工厂,IMapping CFG at NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg,IMapping映射,设置设置,EventListeners监听器)at NHibernate.Cfg.Configuration.BuildSessionFactory()at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()---内部异常结束堆栈跟踪---位于FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()位于C:\ Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH中的BI_OverlordPackageCore.OfeDatabase.CreateSqliteSessionFactory()中.映射错误\ OfeDatabase.cs:第192行C:\ Bicw_Dev\Bic.Net\P中的BI_OverlordPackageCore.OfeDatabase.GetMainSession()rivate Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs:位于C:\ Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase中BI_OverlordPackageCore.OfeDatabase.Initialize(Assembly []程序集)的第147行. CS:\ Bicw_Dev\Bic.Net \私营项目\ NHibernate的\ FNH 1.3映射错误\ Form1.cs中:在System.Windows线23在FNH_1._3_Mapping_Bug.Form1.button1_Click(对象发件人,EventArgs e)在C线305. System.Windows.Forms.OnClick(EventArgs e)位于System.Windows.Forms.OnMouseUp(MouseEventArgs mevent)的System.Windows.Forms.Button.OnClick(EventArgs e),位于System.Windows.Forms.Control.WmMouseUp(Message&m) ,MouseButtons按钮,Int32单击)在System.Windows.Forms.ButtonBase.WndProc(Message&m)的System.Windows.Forms.Control.WndProc(Message&m)处于System.Windows.Forms.Button.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(消息&m)上System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息&m)上System.Windows.Forms.NativeWindow.Cal lback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)

nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping

4
推荐指数
1
解决办法
1481
查看次数

AnkhSVN和/或TortoiseSVN - 改变目录结构的推荐方法是什么?

我是Ankh和Tortoise的新用户.目前正在增加VS2008应用程序套件,该应用程序套件将具有多个.exe文件,但具有许多通用代码.

目前,我们通过将源文件放在"共享"文件夹树中,并在需要编译这些文件的所有VS2008项目中使用"添加为链接"来共享.exe项目之间的代码.(我们从VisualSVN开始,但切换到Ankh,因为它处理链接文件好得多.)

我们遇到的问题是我们仍在积极修改共享文件夹树的结构 - 添加新文件夹,并在项目发展过程中将现有文件移入其中.

主要使用Tortoise来改变目录结构,但一直遇到问题 - 似乎与存储库不同步.我们收到错误消息,指出文件丢失或树冲突.

我怀疑问题可能是我们有时会以错误的顺序执行操作 - 例如,在移动目录然后提交之前伪造进行更新 - 但我不确定.

所以,我的问题:

哪个是更改目录结构的更好工具 - Ankh或Tortoise?

对于首选工具,必须执行哪些步骤以及按什么顺序执行?

svn tortoisesvn ankhsvn directory-structure

3
推荐指数
2
解决办法
2925
查看次数

NHibernate,WinForms和DataBinding - 他们一起玩得很好吗?

我一直在使用WinForms数据绑定来显示来自使用Fluent NHibernate映射的数据库中的数据,并且这种方法运行良好.

例如,我可以从实体的IList属性设置DataGridView的DataSource属性,并且瞧 - 所有数据都是!

但现在我需要开始添加和保存新的数据行,而且这种情况并不顺利.我以为我能够只启用网格的AllowUserToAddRows属性,并且新行将被添加到实体中的基础IList,但这不起作用.

然后,在稍微搜索之后,我尝试将DataSource属性设置为从IList填充的BindingList,但是也没有使用新行更新.

在我的搜索过程中,我也遇到了一些人报告WinForms和DataBinding的困难,这让我想知道我是否应该继续采用这种方法.

DataBinding方法值得继续吗?如果是这样,任何人都可以建议我哪里出错了?

或者,处理与添加新行相关联的所有DataGridView事件,编写自己的代码以将新对象添加到实体中的IList属性是否更好?

其他建议?(虽然我不认为切换到WPF会成为一种选择,无论数据绑定可能有多好)

data-binding nhibernate fluent-nhibernate winforms

3
推荐指数
1
解决办法
3185
查看次数

有没有MS Access是比SQL Server更好的选择?

这个问题的灵感来自我近一年前提出的一个问题 - 任何一个与ms原型接触的工作 - 最近再次变得活跃,但是作为Access vs SQL Server的争论.

似乎有很多Access仇恨者,主要说唱似乎是它不能很好地扩展(虽然有些人似乎已经能够使它工作).

对于那些使用过这两种技术的人来说,是否存在使用Access over SQL Server的情况?

为什么?

你怎么能提高你的成功几率?

例如,在具有一个或少量用户的桌面应用程序上,Access可能是更好的选择吗?

或者,如果采取反向策略,何时应该避免使用Access?

再次,为什么?

编辑当我说"访问"时,我想获得有关两件事的反馈:

  1. 仅使用数据库组件(Jet/ACE)

  2. 使用应用程序开发功能(报告,脚本等)

毕竟,如果您的应用程序可以忍受数据库端的限制,那么使用某些app dev功能可能会有一些优势.

(仅供记录,我在这场战斗中没有狗 - 我是一个满意的SQLite用户.)

sql-server ms-access

3
推荐指数
1
解决办法
3431
查看次数

你能否使用VS2008调试器忽略来自第三方dll在特定场所的异常?

我正在使用第三方库(Fluent NHibernate),当我在启用"中断所有公共语言运行时异常"(Debug | Exceptions ...菜单)的情况下运行时,它会在启动时抛出无害的"找不到文件"异常.

我意识到我可以取消选中特定的"找不到文件"异常,但如果在我的代码中的某个地方出现这种情况,我就不会得到休息.

是否有任何方法(pragma?属性?)来抑制异常,但只有在我知道它会发生的一个地方?

debugging visual-studio-2008

3
推荐指数
1
解决办法
646
查看次数

将SVN服务器从Linux迁移到Windows - 客户端影响?

我的IT人员告诉我他想将我们的SVN服务器从Linux机器移动到Windows机箱.

我们在客户端使用TortoiseSVN和AnkhSVN.

我是否认为我们可以在工作文件夹上使用"Switch"命令指向新服务器?

还是比这更复杂?

svn migration tortoisesvn ankhsvn

2
推荐指数
1
解决办法
995
查看次数

如何同时从两个程序写入单个xml文件?

在使用旧的INI文件多年后,我们最近开始使用XML文件.

我的同事发现了一些使用System.Xml.XmlDocument.Save的CodeProject示例代码.当两个程序试图同时写入同一个文件时,我们会遇到异常.

System.IO.IOException:进程无法访问文件'C:\ Test.xml',因为它正由另一个进程使用.

事后看来这很明显,但我们没有预料到它,因为通过Win32 API访问INI文件没有这个限制.我假设Win32调用完成了一些仲裁,它们的工作级别高于XmlDocument.Save方法.

我希望.Net库中某处有更高级别的XML例程,它们与Win32函数类似,但不知道从哪里开始查找.

或者我们可以设置文件访问权限以允许多个程序写入同一个文件?

时间很短(就像几乎所有软件项目一样),如果我们无法快速找到解决方案,我们就必须抓住我们的鼻子并回到INI文件中.

c# xml ini

0
推荐指数
1
解决办法
2457
查看次数