小编And*_*eas的帖子

创建异步Web服务方法

我试图阅读异步方法,现在我正在尝试创建自己的异步方法.该方法是一个webservice调用,它返回错误日志列表.我不确定我是否理解正确,所以我想我会分享我的代码,看看我是否应该做任何不同的事情.

我想要的代码就是通过调用方法GetAllErrorLogs()来返回错误日志列表,这是一个同步方法.因为我需要一秒钟才能获取所有错误日志,所以当我调用GetAllErrorLogs()方法时,我希望有机会做其他事情.这是代码.

[WebMethod]
public async Task<List<ErrorLog>> GetAllErrorLogs()
{
    List<ErrorLog> errorLogs = new List<ErrorLog>();

    await System.Threading.Tasks.Task.Run(() => {
        errorLogs = ErrorLogRepository.GetAllErrorLogs();
    });


    if (errorLogs == null)
        return new List<ErrorLog>();

    return errorLogs;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# async-await

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

如何使用async/await在UI线程上异步运行多个任务?

我已经阅读(和使用过)async/await一段时间了很长一段时间但我还有一个问题我无法得到答案.说我有这个代码.

private async void workAsyncBtn_Click(object sender, EventArgs e)
{
    var myTask = _asyncAwaitExcamples.DoHeavyWorkAsync(5);
    await myTask;
    statusTextBox.Text += "\r\n DoHeavyWorkAsync message";
}
Run Code Online (Sandbox Code Playgroud)

它从UI线程调用并返回到UI线程.因此,我可以在此方法中执行UI特定的操作await myTask.如果我曾经使用过,.ConfigureAwait(false)我会在做的时候得到一个线程异常,statusTextBox.Text += "\r\n DoHeavyWorkAsync message";因为我可以通过telled myTask来接受来自线程池的任何可用线程.

我的问题.据我所知,在这种情况下我永远不会离开UI线程,它仍然是异步运行,UI仍然是响应式的,我可以同时启动多个任务,从而加快我的应用程序.如果我们只使用一个线程,它怎么能工作?

谢谢!

编辑Sievajet

private async void workAsyncBtn_Click(object sender, EventArgs e)
{
    await DoAsync();
}

private async Task DoAsync()
{
    await Task.Delay(200);
    statusTextBox.Text += "Call to form";
    await Task.Delay(200);
}
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous threadpool async-await

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

如何使用C#迭代"相关链接"

我在使用umbraco默认数据类型"相关链接"时遇到问题.我的问题是我想迭代属性的子/选项.我已经看过使用xml和xslt的例子,但我想知道在用户控件中是否有可能使用纯c#.

像这样的东西(但是一个工作的变体)

Node node = new Node(Node.getCurrentNodeId());
var linklist = node.GetProperty("link");
if (node.GetProperty("link") != null)
{
    foreach (var item in linklist)
    { 
        //get each item here
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

(我也在这里发布了这个问题)

c# user-controls umbraco

5
推荐指数
2
解决办法
3706
查看次数

如何在解决方案C#中获取另一个项目的绝对路径

我有一个包含两个项目的解决方案.一个项目仅用于完成所有数据工作,另一个项目是启动项目,用于处理所有Web内容.

解

现在我想通过首先获取项目根目录来从TaskManagerHelpers类获取TasksDataBase.xml.但我得到的只是TaskManager.Web根目录.(我从TaskManager.Web中的控制器调用TaskManagerHelpers.cs中的方法)

当我在同一个项目中的某个类时,如何获取TaskManager.Data根目录?

我尝试过使用theese方法和类似方法.

  • HttpContext.Current.Request.PhysicalApplicationPath;
  • System.IO.Path.GetFullPath();
  • AppDomain.CurrentDomain.BaseDirectory;

提前致谢!

.net c# file path asp.net-mvc-4

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