小编Dav*_*vid的帖子

如何用信号量代替synchronized、wait、notify?(生产者-消费者)

晚上好,

我想知道如何用信号量替换下面代码中的同步、等待和通知?我必须在哪里创建信号量变量?

   import java.util.*;

   class Producer
   extends Thread
   {
     private Vector v;

     public Producer(Vector v)
     {
       this.v = v;
     }

     public void run()
     {
       String s;

       while (true) {
         synchronized (v) {
           s = "Value"+Math.random();
           v.addElement(s);
           System.out.println("Producer created "+s);
           v.notify();
         }
         try {
           Thread.sleep((int)(100*Math.random()));
         } catch (InterruptedException e) {
           //nothing
         }
       }
     }
   }

   class Consumer
   extends Thread
   {
      private Vector v;

      public Consumer(Vector v)
      {
         this.v = v;
      }

      public void run()
      {
         while (true) {
            synchronized (v) { …
Run Code Online (Sandbox Code Playgroud)

java semaphore synchronized notify wait

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

使用Find-method时,Entity Framework会抛出异常

我有一个简单的Web应用程序,允许用户上传包含特定数据的2个.csv文件.为了保持数据,我使用了Entity Framework两种不同的数据Import-methods.

第一种进口方法

    public void ImportOne(string path)
    {
        StreamReader sr = new StreamReader(path);

        using (var db = new ContextEv("RndContext"))
        {
            db.Database.ExecuteSqlCommand("DELETE FROM TableA");
            db.Database.ExecuteSqlCommand("DELETE FROM TableB");

            while (!sr.EndOfStream)
            {
                string[] data = sr.ReadLine().Split(';');
                string houseId = data[0];

                    House house = new House()
                    {
                        HouseId = houseId,
                    };

                    House dummy = db.Houses.Find(houseId);

                    if (!dummy.HouseId.Equals(house.HouseId))
                    {
                        db.Houses.Add(house);
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

此行失败:House dummy = db.Houses.Find(houseId);出现以下异常:

其中一个主键值的类型与实体中定义的类型不匹配.有关详细信息,请参阅内部异常.\ r \nParametername:keyValues

InnerException的ErrorContext:

关键字'AS',第1行,第22列

InnerException的ErrorDescription:

查询语法无效.

好吧,我检查了这个类型是否真的存在问题.但是我没有发现任何错误.

关于它的"有趣"的事情是,我在另一个Import-method中使用相同的Find-method,它没有任何异常!

using …
Run Code Online (Sandbox Code Playgroud)

.net c# linq asp.net-mvc entity-framework

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

标签 统计

.net ×1

asp.net-mvc ×1

c# ×1

entity-framework ×1

java ×1

linq ×1

notify ×1

semaphore ×1

synchronized ×1

wait ×1