小编Dro*_*iss的帖子

导致死锁的异步/等待示例

我发现了一些使用c#async/ awaitkeywords的异步编程的最佳实践(我是c#5.0的新手).

给出的建议之一是:

稳定性:了解同步上下文

...某些同步上下文是不可重入和单线程的.这意味着在给定时间内只能在上下文中执行一个工作单元.一个例子是Windows UI线程或ASP.NET请求上下文.在这些单线程同步上下文中,很容易使自己陷入僵局.如果从单线程上下文中生成任务,然后在上下文中等待该任务,则等待代码可能会阻止后台任务.

public ActionResult ActionAsync()
{
    // DEADLOCK: this blocks on the async task
    var data = GetDataAsync().Result;

    return View(data);
}

private async Task<string> GetDataAsync()
{
    // a very simple async method
    var result = await MyWebService.GetDataAsync();
    return result.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如果我自己尝试剖析它,主线程会产生一个新线程MyWebService.GetDataAsync();,但由于主线程在那里等待,它等待结果GetDataAsync().Result.同时,说数据准备好了.为什么主线程不继续它的延续逻辑并从中返回字符串结果GetDataAsync()

有人可以解释一下为什么上面的例子中存在死锁吗?我完全不知道问题是什么......

c# deadlock task-parallel-library async-await c#-5.0

87
推荐指数
3
解决办法
4万
查看次数

为什么我不能从异步代码中捕获异常?

我读到它的任何地方都说下面的代码应该可行,但事实并非如此.

public async Task DoSomething(int x)
{
   try
   {
      // Asynchronous implementation.
      await Task.Run(() => {
      throw new Exception();
      x++;
      });
   }
   catch (Exception ex)
   {
      // Handle exceptions ?
   }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,我没有抓到任何东西,并且在"投掷"线上得到一个"未处理的例外".我在这里很无能为力.

.net c# c#-5.0

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

如何在TypeScript中使用带有SystemJS的momentjs?

我的项目设置包括用于库的'jspm'工具和用于打字的'tsd'工具.

在安装了moment的TypeScript d.ts文件(这些)之后,我找不到加载和实际使用时刻实例的方法.

在我的文件中(使用SystemJS模块加载)

/// <reference path="../../../typings/tsd.d.ts" />
import * as moment from "moment";
import * as _ from "lodash";
...
...
const now = (this.timestamp === 0) ? moment() : moment(this.timestamp);
Run Code Online (Sandbox Code Playgroud)

我得到一个" TypeError:时刻不是函数 "

这些定义的结构与lodash相同,工作正常,所以我不知道原因可能是什么.

有人可以帮忙吗?

momentjs typescript systemjs

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

Joda时间,期间到总millis

我试图从Period对象实例中获取Milliseconds(而不是 millis字段)的总量.我尝试过多次转换,因为我找不到任何方法可以轻松实现.

有没有人需要它并设法检索它?

(我需要这个补丁,找出一个负期;负毫秒=负期.)

java jodatime

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

*.vue文件,Visual Studio 2017和TypeScript

是否可以在Visual Studio 2017中编辑vuejs的*.vue组件文件,并对HTML,TypeScript和SCSS提供突出显示和智能感知支持?

目前,我将不同的部分分成不同的文件:

<!-- my-component.vue opened in HTML editor -->
<template>
    <div> text </div>
</template>
<script src="./path/to/my-component.ts"></script>
<style src="./path/to/my-component.scss"></style>
Run Code Online (Sandbox Code Playgroud)

vue.js vuejs2 visual-studio-2017

7
推荐指数
2
解决办法
7118
查看次数

Visual Studio 类型为“TS2307 找不到模块”的错误,仅在 IDE 中

使用 Visual Studio Community 2017,我在一个 TypeScript 项目中拥有多个子项目,并且每个子项目实际上都是一个独立的项目,拥有它所需的一切,其中包括它自己的tsconfig.json,例如:

{
    "extends": "./../../../tsconfig.json",
    "compilerOptions": {
        "baseUrl": "./src/scripts/application",
        "paths": {
            "@vuex-store/*": [ "store/*" ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

可以看到,它继承自最顶层的tsconfig.json:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "dom",
      "es2017"
    ],
    "module": "commonjs",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "noResolve": false,
    "removeComments": false,
    "skipLibCheck": true,
    "sourceMap": true,
    "suppressImplicitAnyIndexErrors": true,
    "target": "es2017",
    "typeRoots": [
      "node_modules/@types"
    ]
  },
  "exclude": [
    ".awcache",
    ".tsc",
    "bin",
    "node_modules",
    "obj",
    "**/*.spec.ts"
  ],
  "include": [
    "src/**/*.ts",
    "@types/**/*.d.ts" …
Run Code Online (Sandbox Code Playgroud)

visual-studio typescript visual-studio-2017

6
推荐指数
0
解决办法
1097
查看次数

C++:如何创建动态模板类型

我有以下代码,我创建的代码用于更改OpenCV图像(Cv :: Mat类)中像素的强度.

正如您所看到的,我在两种情况下循环,但使用不同的模板类型.

'transfer'功能可以重载.

因此,我的问题是,如何创建动态模板类型以使其看起来更好..

Mat mat = _mat.clone() ;
int channels = mat.channels();

switch(channels)
{
case 1: 
    for (int i=0; i<mat.rows; i++)
    {
        for (int j=0; j<mat.cols; j++)
        {
            uchar src = mat.at<uchar>(i,j);
            uchar dst = mat.at<uchar>(i,j);

            t.transfer(src, dst);
        }
    }
    break;

case 3: 
    for (int i=0; i<mat.rows; i++)
    {
        for (int j=0; j<mat.cols; j++)
        {
            Vec3b src = mat.at<Vec3b>(i,j);
            Vec3b dst = mat.at<Vec3b>(i,j);

            t.transfer(src, dst);
        }
    }
    break;
}

return mat ;
Run Code Online (Sandbox Code Playgroud)

c++

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

如何在EF6中使用复合键从表中搜索记录?

我已经使用 Entity Framework 的 Code First 创建了我的数据库模式,其中一个模型有一个复合键(这在 db 中得到了完美的反映)。

但是,当我尝试使用组合键列表查找记录时,我收到一个异常,提示:“无法创建类型为 '匿名类型' 的常量值。此上下文中仅支持原始类型或枚举类型。”

这是我最后使用的失败的代码(它的变体也产生了相同的错误):

var ids = models.Select(m => new { m.Id, m.InstanceId })
                .ToArray();

var records = _dataService.TableWithCompositeKey
                          .Where(t => ids.Contains(new { t.Id, t.InstanceId }))
                          .ToArray();
Run Code Online (Sandbox Code Playgroud)

评估记录时抛出异常。那么我怎样才能完成这样的任务呢?

entity-framework entity-framework-6

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

如何处理非规范化数据的变化

在包含副本的表中更新未索引的常规列(不是主键相关)的最佳方法是什么?

即,用户发布了一些内容,并且该帖子在许多表中都是重复的,以便快速检索.但是当该帖子发生更改(使用编辑)时,需要在包含该帖子的所有表中(在具有不同和未知主键的表中)更新整个数据库.

我正在考虑的解决方案:

  1. 有一个映射器表来跟踪所有这些表中的主键,但它似乎导致表爆炸(post不是唯一可能更改的属性).
  2. 使用Solr进行映射,但我担心我会将它用于错误的目的.

任何启发将不胜感激.

编辑(虚构架构).

如果帖子发生变化怎么办?甚至是用户的display_name?

CREATE TABLE users (
    id uuid,

    display_name text,

    PRIMARY KEY ((id))
);

CREATE TABLE posts (
    id uuid,

    post text,
    poster_id uuid,
    poster_display_name text
    tags set<text>,
    statistics map<int, bigint>,

    PRIMARY KEY ((id))
);

CREATE TABLE posts_by_user (
    user_id uuid,
    created timeuuid,

    post text,
    post_id uuid,
    tags set<text>,
    statistics map<int, bigint>,

    PRIMARY KEY ((id), created)
);
Run Code Online (Sandbox Code Playgroud)

cassandra nosql

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

Structuremap没有为此对象定义的无参数构造函数

我是StructureMap的新手,我一直试图解决这个错误已经有一段时间了.只是无法弄清楚如何解决它以及我在哪里做错了.我甚至设置了一个MVC4模板网站,其中没有任何内容,但仍然出现错误.

有人可以帮帮我吗?

public static class IoC {
    public static IContainer Initialize() {
        ObjectFactory.Initialize(x =>
                    {
                        x.Scan(scan =>
                                {
                                    scan.TheCallingAssembly();
                                    scan.WithDefaultConventions();
                                });

                        x.For<IDbSession>().Use(() => MvcApplication.DbSession);
                        x.For<IDbService>().Use<DbService>();
                    });
        return ObjectFactory.Container;
    }
}
Run Code Online (Sandbox Code Playgroud)
public class HomeController : Controller
{
    protected readonly IDbService _dbService;

    public HomeController(IDbService dbService)
    {
        _dbService = dbService;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)
public interface IDbSession : IDisposable
{
    void Commit();
    void Rollback();
}
Run Code Online (Sandbox Code Playgroud)
public interface IDbService
{
    StudentsService Students { get; }
    CoursesService Courses { get; }
    ...
}
Run Code Online (Sandbox Code Playgroud)
public class DbService …
Run Code Online (Sandbox Code Playgroud)

structuremap asp.net-mvc asp.net-mvc-4

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