小编Tre*_*vor的帖子

如果线程正在等待异步操作完成,.NET任务线程的资源是否会暂时返回到池中?

我有一个TPL任务,做两件事.首先,它调用Web服务.其次,它将一些数据插入数据库.我一次启动多达20个任务一次又一次地做同样的事情.他们全天所做的就是调用Web服务并将数据插入数据库.

我对.NET中的TPL很新.我已经完成了一些后台工作进程和异步Web服务.

Web服务调用和数据库插入都是在运行任务的线程内阻塞调用.

据我所知,在使用Tasks时,.NET会为您管理一个线程池.是?

如果我使用async和await()进行服务调用和数据库调用而不是使它们阻塞调用,那么线程池是否可以使用更多的线程?

我的理论(我不确定我为什么这么认为)是线程在等待阻塞Web服务时忙于什么都不做,并且无法将其资源临时返回到池中.但是我想知道任务是否在等待异步调用来完成主要任务线程是否能够在等待时切换到让其他东西处理.

我的理论是对的吗?或者我在做什么?

我正在使用c#和.NET 4.0,但如果需要,我可以使用4.5.

.net c# asynchronous task-parallel-library async-await

11
推荐指数
1
解决办法
2198
查看次数

为什么按主键分组的插入会抛出主键约束违规错误?

我有一个插入语句,抛出主键错误,但我不知道如何插入重复的键值.

首先,我使用主键创建临时表.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED //Note: I've tried committed and uncommited, neither materially affects the behavior. See screenshots below for proof.

IF (OBJECT_ID('TEMPDB..#P')) IS NOT NULL DROP TABLE #P;

CREATE TABLE #P(idIsbn INT NOT NULL PRIMARY KEY, price SMALLMONEY, priceChangedDate DATETIME);
Run Code Online (Sandbox Code Playgroud)

然后我从Price表中提取价格,按idIsbn分组,这是临时表中的主键.

INSERT  INTO #P(idIsbn, price, priceChangedDate)
SELECT  idIsbn ,
        MIN(lowestPrice) ,
        MIN(priceChangedDate)
FROM Price p
WHERE p.idMarketplace = 3100
GROUP BY p.idIsbn
Run Code Online (Sandbox Code Playgroud)

据我所知,idIsbn按照定义进行分组使其独一无二.价格表中的idIsbn是:[idIsbn] [int] NOT NULL.

但是每次我运行此查询时都会遇到此错误:

Violation of PRIMARY KEY constraint 'PK__#P________AED35F8119E85FC5'. Cannot …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server

9
推荐指数
1
解决办法
819
查看次数

如何在TFS中查看存储库中的所有Git pull请求?

我正在管理一个在TFS中的许多Git存储库中工作的团队.我们很难跟踪TFS中的拉取请求.我希望查询所有repos'拉取请求,以便我可以看到每个的状态.有没有办法在TFS或VS中执行此操作?如果没有,有没有办法用其他Git工具做到这一点?

git tfs pull-request

8
推荐指数
1
解决办法
3003
查看次数

用手指在iPhone上绘制直线

背景:我正在尝试创建一个非常简单的iPhone应用程序,该应用程序将允许用户用手指在屏幕上绘制多条直线。

我正在使用这两种方法UIViewController来捕获每条线的端点的坐标。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Run Code Online (Sandbox Code Playgroud)

问题: 我希望touchesEnded线条在触发后立即显示,然后继续在屏幕上绘制更多线条。我该怎么做呢?我不一定需要代码,但是我需要有关如何将其组合在一起的总体思路的帮助。另外,我也不是xib的忠实拥护者,如果可能会影响答案,我希望通过编程方式全部完成。

我尝试过的内容:我尝试使用Quartz 2d,但似乎要使用它,必须在drawRect单独的子类化视图的方法中进行绘制。所以我必须为每行创建一个新视图吗?然后我的坐标将被弄乱b / c我必须将touches位置从UIViewController转换为视图。

我也尝试过使用OpenGL,但在使用GLPaint示例作为模板方面取得了一些成功,但是OpenGL在屏幕上绘制一些直线似乎有些过头。

xcode opengl-es objective-c uiviewcontroller drawrect

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

如何在 Snowflake 中显示所有角色的所有授权?

在 Snowflake 中,我知道我可以扮演角色:

show roles
Run Code Online (Sandbox Code Playgroud)

我知道我可以显示特定角色的授权并通过查询访问这些授权:

show grants to role dev_role;
select * from table(RESULT_SCAN (LAST_QUERY_ID()));
Run Code Online (Sandbox Code Playgroud)

我想在一张表中显示所有角色的所有授权。我最好的猜测是编写一个过程,遍历所有角色名称,执行上述代码,并将结果输出到表中。

有没有更好的方法来做到这一点?

snowflake-cloud-data-platform

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

最小化从多个仓库发货的数量的算法

我在美国有10个仓库。他们每个人可能有也可能没有库存产品A,B,C,D,E。有人从我的网站订购了所有五个物品。

我想减少发送的货物数量。如何确定从哪些仓库运送哪些物品?

例如,某人命令A,B,C,D和E。

  • 我在纽约有A和B(但没有其他人)。
  • 我在波士顿有A,B和C(但没有其他人)。
  • 我在芝加哥有D和E(但没有其他人)。

我正在尝试开发一种算法,该算法将创建来自波士顿的三件商品和来自芝加哥的两件商品。

我不想要纽约的2件商品,波士顿的1件商品和芝加哥的2件商品。

所有项目都在一个中央数据库中。

algorithm

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

如何在循环中创建闭包并将其存储在变量中以便以后执行

见下面的代码.我试图剥掉它的骨头.

我有一个_queue数组.我想迭代10次.在每次迭代中,我想创建一个具有j的适当范围引用的函数(即第一次迭代时j = 0,第二次迭代时j = 1,等等)

我想将该函数存储在变量f中,然后将f添加到_queue数组中,以便稍后调用它.

问题当然是在第一个循环的每次迭代中,不是将闭包存储在f中,而是立即执行闭包.

我的问题是:如何使用正确的j变量存储函数,以便将其添加到_queue数组中?

    _queue = [];

    for (j = 0; j < 10; j++) {

        var f =
          (function (index) {
            alert(index);
        })(j);                    //code is executed here instead of stored in the f variable

        _queue.push(f);  //Add f 

    }

    for (k = 0; k < _queue.length; k++){
        _queue[k].call();
    }
Run Code Online (Sandbox Code Playgroud)

javascript closures

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

用字典数据填充UITableView

我的情况:

我有一个NSDictionary对象.由NSNumber提供.值是自定义对象.

我想将字典值放入UITableView.据我所知,UITableView要求对其源集合进行索引,以便在调用cellForRowAtIndexPath时,可以使用indexPath查找该值.

问题是当调用didSelectRowAtIndexPath时,我想从字典中查找对象,但是我没有密钥.我只有indexPath.row.

我的解决方案:我创建了一个键数组.我使用数组的索引来获取密钥,然后使用密钥将对象从字典中取出.

我的问题:这似乎有点草率,特别是因为这是一个例行任务(填充UITableView然后当有人触摸一个单元格时响应).这是它的设计方式还是更好的方式?

iphone cocoa-touch uitableview nsmutabledictionary

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

您如何测试是否已创建对象的新实例?

我正在使用C#,xUnit和Moq进行单元测试.我有一个具有复杂类型属性的对象.为了"清除"该属性及其所有属性,我这样做:

this.ComplexTypeInstance = new ComplexType();
Run Code Online (Sandbox Code Playgroud)

现在我试图断言ComplexTypeInstance已被分配给一个全新的对象.我的第一个想法是将ComplexTypeInstance与新的ComplexType()进行比较,看看它们是否相等.但要做那样的事情,我想我必须覆盖equals运算符.有没有办法轻松检查所有属性是否设置为默认值?或者有没有办法断言我已经新建了这个对象?

c# unit-testing xunit

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