小编svi*_*ick的帖子

试图理解为什么这个工作/异步返回

我正在创建一个ASP.NET WebAPI 2控制器.它有效,但我很困惑.看来我正在返回List <..>而不是Task

请向我解释为什么返回列表是正确的.

public class AttendeePriceController : ApiController
{
    // GET api/<controller>
    public async Task<List<AttendeePrice>> Get()
    {
        List<AttendeePrice> attendeesPriceList;
        using (var db = new MyContext())
        {
            attendeesPriceList = await db.AttendeePrices.ToListAsync();
        }
        return attendeesPriceList;
    }
Run Code Online (Sandbox Code Playgroud)

c# async-await asp.net-web-api

0
推荐指数
1
解决办法
54
查看次数

使用委托异步/等待

我想订阅一个事件的异步方法。

然而,编译器不会让我这样做。

我怎样才能做到这一点?

例子:

class SearchBase
{
    public delegate void ReuestingCollectionHandler();
    public event ReuestingCollectionHandler RequestingCollection = null;
}
.
.
.
SearchBase.RequestingCollection += LoadCandidates;


 public async Task LoadCandidates()
 {
    var queryText = string.Empty;
    Candidates = await CandidatesManager.GetCandidates(Profile.Instance.RecruiterId);
 }
Run Code Online (Sandbox Code Playgroud)

c# events async-await

0
推荐指数
1
解决办法
2002
查看次数

并行库的MaxDegreeOfParallelism值?

我是线程和并行库的新手。我试图了解MaxDegreeOfParallelism以及应将其设置为什么值。

做一些阅读,对我来说可能有点误导。

如果我想在4个线程上运行,我想我可以做

var parOptions=new ParallelOptions();
parOptions.MaxDegreeOfParallelism=4;
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,多读一些内容似乎并不意味着可以在4个线程上运行,而是更多地涉及Cores及其使用量。

为简单起见,设置应运行的线程数的正确方法是什么?或者,也许您可​​以在它可以使用的多个线程上进行设置,但是可以在其使用的核心数量上进行更多设置

我打算在config.eg“ ThreadCount”中设置一个用户可以指定的值。这是其他开发人员将运行的内部应用程序,用于导入内容。

任何澄清吗?谢谢

c# task-parallel-library

0
推荐指数
1
解决办法
1427
查看次数

我可以在ASP.NET Web Forms 4.5中使用WebAPi的完整功能吗?

我想创建一些Web服务,但我决定使用WebAPI作为服务框架而不是WCF,所以我有一些问题:

  1. 我可以使用全功能的WebAPI的ASP.NET Web窗体 4.5 没有任何问题

  2. WebForms 4.5与异步等待编程一起使用?

  3. WebForms 4.5可以与HttpClient库和异步编程一起使用, 没有任何问题或限制吗?

  4. 有没有什么特别的限制,的WebAPIASP.NET的WebForms 4.5?(反之亦然)

*如果有限制,我将被迫使用WCF :(

c# asp.net webforms async-await asp.net-web-api

0
推荐指数
1
解决办法
115
查看次数

如何验证异步到同步方法和 HttpClient.PostAsync 调用中的死锁?

我的程序出现死锁,但我不知道为什么以及如何解决它。

精简版:

一个asynctosync方法锁定等待异步调用,它调用另一个,依此类推,直到HttpClient.PostAsync调用。http post 调用永远不会发生,至少它没有到达服务器(我也拥有)。客户端没有错误。我的主要问题是在这个 SO 问题的末尾。谢谢!

更长的版本:

我知道很容易出现死锁,我们必须小心。我试图坚持 1. 将异步传播到所有方法和 2.ConfigureAwait(false)尽可能使用/有意义的建议。(我认为这一点的主要倡导者是 Stephen Cleary 作为他的博客和我阅读过的许多 SO 中的答案)。

好吧,我的程序……不幸的是,我不能在这里发布完整的示例代码,它很长;我把它描述为一个同步方法A,它调用一个异步方法B,它调用另一个异步,它调用另一个异步,等等。最终最后一个异步调用是HttpClient.PostAsync.

程序停止在await HttpClient.PostAsync。此外,Http post 永远不会触发(我拥有目标服务器,在这种情况下它永远不会收到请求)。(我仔细检查了 uri 等)。

因此,同步方法会锁定等待B的异步任务完成,而这从未发生过。A看起来像这样:

public Byte[] A()
{
var task = BAsync();
return task.GetAwaiter().GetResult();
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式使用同步,因为他的方法不需要返回上下文,我看到斯蒂芬在 Nito 中建议的方法是使用它实现的。(我也尝试过task.Result,但结果相同)。

http post调用的代码是:

private static async Task<HttpResponseMessage> PostAsync(Uri serverUri, HttpContent httpContent)
{
var client = new HttpClient();
return await client.PostAsync(serverUri, …
Run Code Online (Sandbox Code Playgroud)

c# async-await dotnet-httpclient windows-phone-8

0
推荐指数
1
解决办法
1381
查看次数

如何嵌套此LINQ查询?

我有一个来自我正在尝试查询的Web服务的XML文档.但是,我不确定如何在嵌套在其他元素中的元素时查询XML.

这是XML文件的一部分(我没有包含所有内容,因为它是一个长文件):

<response>
    <display_location>
        <full>London, United Kingdom</full>
        <city>London</city>
        <state/>
        <state_name>United Kingdom</state_name>
        <country>UK</country>
        <country_iso3166>GB</country_iso3166>
        <zip>00000</zip>
        <magic>553</magic>
        <wmo>03772</wmo>
        <latitude>51.47999954</latitude>
        <longitude>-0.44999999</longitude>
        <elevation>24.00000000</elevation>
    </display_location>
    <observation_location>
        <full>London,</full>
        <city>London</city>
        <state/>
        <country>UK</country>
        <country_iso3166>GB</country_iso3166>
        <latitude>51.47750092</latitude>
        <longitude>-0.46138901</longitude>
        <elevation>79 ft</elevation>
    </observation_location>
Run Code Online (Sandbox Code Playgroud)

我可以一次查询"一个部分"但我正在从LINQ构造一个对象.例如:

var data = from i in weatherResponse.Descendants("display_location")
           select new Forecast
           {
               DisplayFullName = i.Element("full").Value
           };

var data = from i in weatherResponse.Descendants("observation_location")
           select new Forecast
           {
               ObservationFullName = i.Element("full").Value
           };
Run Code Online (Sandbox Code Playgroud)

我的"预测"类基本上只是充满了这样的属性:

class Forecast
{
    public string DisplayFullName { get; set; };
    public string ObservationFullName { get; set; }; …
Run Code Online (Sandbox Code Playgroud)

c# xml linq linq-to-xml

0
推荐指数
1
解决办法
110
查看次数

链表的递归插入方法

我正在学习 C#,并且为链表创建了一个递归插入方法:

public static int recursiveInsert(ref int value, ref MyLinkedList list) {
    if (list == null)
        return new MyLinkedList(value, null);
    else {
        list.next = recursiveInsert(ref int value, ref list.next);
        return list;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何修改此方法以使递归调用如下所示:

recursiveInsert(value, ref list.next)
Run Code Online (Sandbox Code Playgroud)

代替:

list.next = recursiveInsert(ref int value, ref list.next);
Run Code Online (Sandbox Code Playgroud)

.net c#

0
推荐指数
1
解决办法
280
查看次数

是否可以在内联对象声明中使用循环?

对象ListOfCommentList<Comment>属性在哪里,最好的方法是:

                        ListOfComment = new List<Comment>
                        {
                            foreach(object a in b)
                            {
                                new Comment
                                {
                                    Type = "",
                                    Description = ""
                                }
                            }
                        }
Run Code Online (Sandbox Code Playgroud)

c# asp.net

0
推荐指数
1
解决办法
59
查看次数

facebook api的异步功能

我有一个facebook post id列表 386050065267_10153256675935268

通过使用下面的代码我获得所需的结果作为喜欢,分享和评论的总数

foreach (var item in collection)
{
    FacebookClient fb = new FacebookClient(accessToken);
    dynamic result = fb.Get(item.postId, new { fields = "shares,likes.summary(true),comments.summary(true)" });
}
Run Code Online (Sandbox Code Playgroud)

在该代码中是否有使用异步的可能性?我是异步功能的新手,请帮我做正确的代码,感谢所有的想法.

.net c# facebook async-await

0
推荐指数
1
解决办法
424
查看次数

在完成之前让Web API控制器等待IAsyncResult吗?

我有一个Web API控制器.它调用一个返回IAsyncResult的方法.当我调用控制器时,我收到错误

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

如何让控制器等待asyncresult?

我打算使用await,但我可能还没有弄清楚这个用例的语法.

我还没有找到关于SO的现有答案.

我正在使用c#4.5

[HttpGet]
[Route("GetGridDataAsync")]
public string GetGridDataAsync()
{
        var proxy = new Proxy();
        return proxy.BeginGetDataAsync("test", ar => proxy.EndGetDataAsync(ar));             
}

public IAsyncResult BeginGetDataAsync(string r, AsyncCallback callback){}

public DataResponse[] EndGetDataAsync(IAsyncResult asyncResult){}
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await c#-5.0 asp.net-web-api

0
推荐指数
1
解决办法
1149
查看次数