我做的是.NET WINFORM程序,环境这样的:
计算机A,B,C,D,E   5台计算机   他们分别对录入的商品进行处理,
但是如果A,处理了,其他所有机器都不能处理,如果B处理了,其他所有计算机也都不能处理,依次类推,
也就是说操作的过程是不可以重复的操作,但是A-E还是同时进行的,有可能会发生装车现象,就是2面同时操作了,所以一般WINFORM来解决这样的问题是怎么处理的?我想用到进程锁定的办法(或者我的方法说不太清楚,或许不是这个名称),就是当第A电脑操作的时候他锁住这个东西,让其他人都不可以碰,我感觉应该用这样的方法,但是具体怎么实现呢? 或者我的办法有些麻烦?还是或者winform下解决这样的情况有别的办法?   如果说用我的办法,他叫什么名字?我怎么去查资料呢?    
或者说一般你们来解决这个情况,用的什么方法来告诉我下也可以谢谢。?欢迎探讨MY  qq 804206885   会的联系我下  谢谢  不会的帮我顶贴别白来,到时候我多给大家点分  

解决方案 »

  1.   

    如果是数据库...你可以添加一列为处理标记..其他人在处理的时候判断这个标记就好了.. 不是数据库的.你可以通过SOCKET进行消息发送.控制你输入窗体..不懂进程锁的说
      

  2.   

    顶了,我现在也在开发winform方面的软件,这个也考虑过,有点难度,不过我的是有对应的编号处理的,
    不同的人做相同的事,我会给他生成新的编号!这样能防止数据错误,挺笨的方法,希望能开阔你的思路!
      

  3.   

    或者说所有的客户端都调用WBESERVICE,WEBSERVICE中的方法或使用的方法使用同步。
      

  4.   

    我的项目是增加的这么一个时间列"timestamp"来判断有没有多端操作
      

  5.   

    计算机A,B,C,D,E  5台计算机  他们分别对录入的商品进行处理, 
    但是如果A,处理了,其他所有机器都不能处理,如果B处理了,其他所有计算机也都不能处理,依次类推,你用事务不就好了?添加事务的隔离级别TransactionOptions options = new TransactionOptions();
    options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
     using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
    {
         try
         {
                        //操作
               scope.Complete();
         }
         catch(Exception) { }
    }
    根据你选一个下面的项就行了:
    Serializable 可以在事务期间读取可变数据,但是不可以修改,也不可以添加任何新数据。 
    RepeatableRead 可以在事务期间读取可变数据,但是不可以修改。可以在事务期间添加新数据。 
    ReadCommitted 不可以在事务期间读取可变数据,但是可以修改它。 
    ReadUncommitted 可以在事务期间读取和修改可变数据。 
    Snapshot 可以读取可变数据。在事务修改数据之前,它验证在它最初读取数据之后另一个事务是否更改过这些数据。如果数据已被更新,则会引发错误。这样使事务可获取先前提交的数据值。 
    Chaos 无法覆盖隔离级别更高的事务中的挂起的更改。 
    Unspecified 正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。如果设置了此值,则会引发异常。