小编MFa*_*MAR的帖子

Task.Run with Parameter(s)?

我正在开展一个多任务网络项目,我是新手Threading.Tasks.我实现了一个简单的Task.Factory.StartNew(),我想知道我该怎么做Task.Run()

这是基本代码:

Task.Factory.StartNew(new Action<object>(
(x) =>
{
    // Do something with 'x'
}), rawData);
Run Code Online (Sandbox Code Playgroud)

System.Threading.Tasks.Task对象浏览器中查看,我找不到Action<T>类似的参数.只有Action这需要void参数,没有类型.

只有两件事情similiar:static Task Run(Action action)static Task Run(Func<Task> function),但不能发布与两个参数(一个或多个).

是的,我知道我可以,但创建一个简单的扩展方法,我的主要问题是,我们可以把它写在一行Task.Run()

c# lambda task task-parallel-library

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

在高性能套接字上使用Async-Await vs ThreadPool与MultiThreading(C10k解决方案?)

我对async-awaits,pools和threads 感到困惑.主要问题始于这个问题:"当我必须处理10k套接字I/O时,我该怎么办?" (又名C10k问题).

  • 首先,我尝试使用一个主要Queue和多个Threads来处理所有传入数据的线程来创建自定义池化架构.这是关于理解一个伟大的经验 thread-safetymulti-threading但是thread是一个矫枉过正async-await时下.
  • 后来,我实现了一个简单的架构,async-await但我无法理解为什么"async和await关键字不会导致创建额外的线程." (来自MSDN)?我认为必须要做一些threadBackgroundWorker这样的工作.
  • 最后,我实现了另一个架构,ThreadPool它看起来像我的第一个自定义池.

现在,我认为我应该有其他人对处理C10k感到困惑.我的项目是我的游戏项目的专用(中央)服务器,它是集线器/大厅服务器,如MCSG的大厅或COD的配对服务器.我将进行登录操作,游戏服务器命令执行/查询和服务信息(如版本,补丁).

最后一部分可能对我的项目更具体,但我真的需要一些关于多个(重)数据处理的真实世界解决方案的好建议.

(也就是说,1k-10k-100k连接处理取决于服务器硬件,但这是一般性问题)


关键点:在任务并行库和ThreadPool之间选择(MSDN博客)


[附加]想要了解我们在谈论什么的好(基本)事物:

  1. 主题
  2. 异步,等待
  3. 线程池
  4. 的BackgroundWorker

c# sockets multithreading asynchronous threadpool

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

在<script src ="..."> </ script>标签内运行JavaScript?

我有一个处理制表符开关的JavaScript文件.这是来源:

var tCount = 0;

function SwitchToTab(id) {
    if (id < 0 || id > tCount) { id = 0; }

    for (var i = 0; i < tCount; i++) { document.getElementById("tab" + i).className = ""; }
    document.getElementById("tab" + id).className = "active";

    for (var i = 0; i < tCount; i++) { document.getElementById("area" + i).style.display = "none"; }
    document.getElementById("area" + id).style.display = "";
}

function InitializeTabs(initialTabId, tabsCount) {
    tCount = tabsCount;
    SwitchToTab(initialTabId);
}
Run Code Online (Sandbox Code Playgroud)

我试图尽可能地缩短它:

<script src="Resources/Tabs.js">InitializeTabs(0, 4);</script>
Run Code Online (Sandbox Code Playgroud)

它不起作用,但如果我将它们分开,它会起作用:

<script src="Resources/Tabs.js"></script> …
Run Code Online (Sandbox Code Playgroud)

html javascript

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

Model退出使用范围时实际发生了什么?

我正在使用块实现db模型,不要混淆处理和任何相关的非托管资源需求,但我想知道(基本上)当db模型不使用块作用域时会发生什么.问题不在于处置记忆(我知道,它会自动为我们做).关于SQL连接和相关实例的问题.

所以,这是一个简单的(ActionResult)示例:

Account account;
using(AccountsModel accountModel = new AccountsModel())
{
    account = accountsModel.Accounts.FirstOrDefault(x=> x.Username == username);
    if(account == null) return;

    account.Name = name;
    accountsModel.SaveChanges();
}

ViewBag.Name = account.Name; // Is it safe?
return View();
Run Code Online (Sandbox Code Playgroud)

问题是:" 使用范围访问模型的Account类实例(由提供者提供AccountsModel)是否安全?"

注意:我知道,我不能/不能在表格上执行任何更新超出范围.

c# sql-server asp.net scope

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

创建不可见的可点击按钮

我试图创建一个不可见的可点击按钮,但是当我点击它时,没有任何反应......

我用来使按钮不可见的代码:

button1.Visible = false;
Run Code Online (Sandbox Code Playgroud)

我想在点击按钮时显示图片(在它被隐藏之后)

c# button visual-studio

3
推荐指数
1
解决办法
8618
查看次数