小编Yuv*_*kov的帖子

运行多个异步任务并等待它们全部完成

我需要在控制台应用程序中运行多个异步任务,并在进一步处理之前等待它们全部完成.

那里有很多文章,但我读的越多越好.我已经阅读并理解了Task库的基本原理,但我显然错过了某处的链接.

我知道可以将任务链接起来,以便它们在另一个完成之后开始(这几乎是我读过的所有文章的场景),但我希望我的所有任务同时运行,我想知道一次他们都完成了.

对于这样的场景,最简单的实现是什么?

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

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

如何用out参数编写异步方法?

我想用out参数编写一个异步方法,如下所示:

public async void Method1()
{
    int op;
    int result = await GetDataTaskAsync(out op);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办GetDataTaskAsync

c# async-await

148
推荐指数
9
解决办法
8万
查看次数

为什么这个字符串的长度比它中的字符数长?

这段代码:

string a = "abc";
string b = "AC";
Console.WriteLine("Length a = {0}", a.Length);
Console.WriteLine("Length b = {0}", b.Length);
Run Code Online (Sandbox Code Playgroud)

输出:

Length a = 3
Length b = 4
Run Code Online (Sandbox Code Playgroud)

为什么?我唯一能想到的是中文字符长度为2个字节,并且该.Length方法返回字节数.

.net c# string unicode unicode-string

145
推荐指数
8
解决办法
2万
查看次数

安装在Visual Studio中创建的Windows服务

当我在Visual Studio 2010中创建新的Windows服务时,我收到消息,声明使用InstallUtil和net start来运行该服务.

我尝试了以下步骤:

  1. 创建新项目文件 - >新建 - >项目 - > Windows服务
  2. 项目名称:TestService
  3. 按原样构建项目(Service1构造函数,OnStart,OnStop)
  4. 打开命令提示符,运行"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe"TestService.exe
  5. 运行net start TestService.

步骤4的输出

运行事务安装.

开始安装的安装阶段.

请参阅日志文件的内容以获取C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestService\obj\x86\Debug\TestService.exe程序集的进度.

该文件位于C:\ Users\myusername\Documents\Visual Studio 2010\Projects\Tes tService\TestService\_dj\x86\Debug\TestService.InstallLog.

安装程序集'C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestS ervice\TestService\_dj\x86\Debug\TestService.exe'.

受影响的参数是:

logtoconsole =

logfile = C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestService\T\testService\_dj\x86\Debug\TestService.InstallLog

assemblypath = C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestServ ice\TestService\obj\x86\Debug\TestService.exe

没有具有RunInstallerAttribute.Yes属性的公共安装程序可以在C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestSe rvice\_ obj\x86\Debug\TestService.exe程序集中找到.

安装阶段成功完成,提交阶段正在开始.

请参阅日志文件的内容以获取C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestService\obj\x86\Debug\TestService.exe程序集的进度.

该文件位于C:\ Users\myusername\Documents\Visual Studio 2010\Projects\Tes tService\TestService\_dj\x86\Debug\TestService.InstallLog.

提交程序集'C:\ Users\myusername\Documents\Visual Studio 2010\Projects\TestS ervice\TestService\_obj\x86\Debug\TestService.exe'.

受影响的参数是:

logtoconsole = …

c# windows service windows-services installutil

134
推荐指数
4
解决办法
14万
查看次数

无法使用此动词类型发送内容正文

我刚刚在我的.NET 2.0应用程序中运行此异常(ProtocolViolationException)(在Windows Mobile 6标准仿真器上运行).令我困惑的是,据我所知,我没有添加任何内容正文,除非我无意中以某种方式完成了它.我的代码如下(非常简单).还有什么我需要做的是说服.NET这只是一个http GET吗?

谢谢,布莱恩

//run get and grab response
WebRequest request = WebRequest.Create(get.AbsoluteUri + args);
request.Method = "GET";
Stream stream = request.GetRequestStream();           // <= explodes here
XmlTextReader reader = new XmlTextReader(stream);
Run Code Online (Sandbox Code Playgroud)

.net webrequest

90
推荐指数
2
解决办法
15万
查看次数

为什么不能识别"异步无效"单元测试?

async void 单元测试无法在Visual Studio 2012中运行:

[TestClass]
public class MyTestClass
{
    [TestMethod]
    public async void InvisibleMyTestMethod()
    {
        await Task.Delay(1000);
        Assert.IsTrue(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想要进行异步单元测试,则测试方法必须返回一个Task:

[TestMethod]
public async Task VisibleMyTestMethod()
{
    await Task.Delay(1000);
    Assert.IsTrue(true);
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?不是说我绝对需要async void测试方法,我只是好奇.构建async void测试方法时,Visual Studio 2012不会发出警告或错误,即使它无法运行...

c# unit-testing async-await c#-5.0 visual-studio-2012

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

moq对象返回方法,应该返回一个null对象

我正在开发一个Web API,我想出的一个测试是,如果客户端使用物理测试ID进行GET操作(物理测试是我正在寻找的资源)并且找不到物理测试,Web API应返回404状态.

现在,我正在使用moq框架进行测试,我有以下代码:

[TestMethod]
public void then_if_physical_test_not_found_return_not_found_status()
{
    var unitOfWork = new Mock<IUnitOfWork>();
    var repository = new Mock<IRepository<PhysicalTest>>();
    repository.Setup(r => r.FindById(It.IsAny<int>())).Returns();
    unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object);
    var pt = new PhysicalTestResource(unitOfWork.Object);
    HttpResponseMessage<PhysicalTest> response = pt.GetPhysicalTest(43);
    Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode)
}
Run Code Online (Sandbox Code Playgroud)

我需要Returns()方法来返回一个null对象,如果找不到资源,它将是实际API方法返回的对象.

我尝试在Returns()方法中将null作为参数发送但没有成功.

c# moq mocking asp.net-mvc-3 wcf-web-api

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

如何在C#中为属性名称添加"+"?

如何fg+在C#中声明属性或变量名称?

public string fg+ { get; set; }
Run Code Online (Sandbox Code Playgroud)

fg+在JSON的响应中得到了一个字段"fg+": "103308076644479658279".

我正在使用类反序列化它.我如何从JSON中读取它?

c# json

50
推荐指数
1
解决办法
3847
查看次数

ASP.NET控制器:在异步操作仍处于挂起状态时完成的异步模块或处理程序

我有一个非常简单的ASP.NET MVC 4控制器:

public class HomeController : Controller
{
    private const string MY_URL = "http://smthing";
    private readonly Task<string> task;

    public HomeController() { task = DownloadAsync(); }

    public ActionResult Index() { return View(); }

    private async Task<string> DownloadAsync()
    {
        using (WebClient myWebClient = new WebClient())
            return await myWebClient.DownloadStringTaskAsync(MY_URL)
                                    .ConfigureAwait(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我启动项目时,我看到了我的视图,它看起来很好,但是当我更新页面时,我收到以下错误:

[InvalidOperationException:在异步操作仍处于挂起状态时完成异步模块或处理程序.

为什么会这样?我做了几个测试:

  1. 如果我们task = DownloadAsync();从构造函数中删除并将其放入Index方法中它将正常工作而没有错误.
  2. 如果我们使用另一个DownloadAsync()身体return await Task.Factory.StartNew(() => { Thread.Sleep(3000); return "Give me an error"; });它将正常工作.

为什么不可能WebClient.DownloadStringTaskAsync在控制器的构造函数中使用该方法?

.net c# webclient async-await asp.net-mvc-4

43
推荐指数
3
解决办法
5万
查看次数

IntelliJ IDEA中`scala-2.11`文件夹的用途是什么?

最近更新IDEA和Scala插件后出现了scala-2.11文件夹.
它应该用于什么?

scala intellij-idea

43
推荐指数
1
解决办法
4214
查看次数