Tag: C#的

什么是使用C#.NET 4.0中的Task.Runreplace方法?

我得到这个程序,给我语法错误“System.Threading.Tasks.task不包含运行的定义。 我正在使用VB 2010 .NET 4.0有什么想法? 在.net 4.0中运行的任何替代? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ChatApp { class ChatProg { static void Main(string[] args) { Task<int> wakeUp = DoWorkAsync(2000,"Waking up"); Task.WaitAll(wakeUp); } static Task<int> DoWorkAsync(int milliseconds, string name) { //error appears below on word Run return Task.Run(() => { Console.WriteLine("* […]

如何使用LINQasynchronous地等待任务列表?

我有一个我创build的任务列表,如下所示: public async Task<IList<Foo>> GetFoosAndDoSomethingAsync() { var foos = await GetFoosAsync(); var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList(); … } 通过使用.ToList() ,任务应该都开始。 现在我想等待完成并返回结果。 这工作在上面…块: var list = new List<Foo>(); foreach (var task in tasks) list.Add(await task); return list; 它做我想要的,但这似乎相当笨拙。 我宁愿写这样简单的东西: return tasks.Select(async task => await task).ToList(); …但这不能编译。 我错过了什么? 还是这样expression事物是不可能的?

如何在Visual Studio中使用makefile?

我听说了许多关于makefile以及它们如何简化编译过程。 我正在使用VS2008。 有人可以build议一些在线参考或书籍,我可以find更多关于如何处理它们?

在c#中使用十进制值作为属性参数?

我一直在尝试使用十进制值作为参数的字段属性,但我得到一个编译器错误。 我发现这个博客文章链接说,这是不可能在.Net使用,然后有人知道他们为什么select这个或如何使用十进制参数? 谢谢。

在C#中使用Queue.Synchronized或lock()来保证线程安全性会更好吗?

我有一个Queue对象,我需要确保是线程安全的。 使用这样的锁对象会更好: lock(myLockObject) { //do stuff with the queue } 还是推荐使用Queue.Synchronized是这样的: Queue.Synchronized(myQueue).whatever_i_want_to_do(); 从阅读MSDN文档它说,我应该使用Queue.Synchronized使其线程安全,但它然后给出了一个使用锁对象的例子。 从MSDN文章: 为了保证队列的线程安全,所有的操作只能通过这个包装来完成。 枚举枚举本质上不是一个线程安全的过程。 即使集合同步,其他线程仍然可以修改集合,这会导致枚举器抛出exception。 为了确保枚举过程中的线程安全性,可以在整个枚举过程中locking集合,或者捕获其他线程所做更改所导致的exception。 如果调用Synchronized()不能确保线程安全,那么它有什么意义呢? 我在这里错过了什么?

如何实施例外情况?

几乎每个人都使用它们,但是包括我在内的许多人都认为他们只是工作而已。 我正在寻找高品质的材料。 我使用的语言是:Java,C,C#,Python,C ++,所以这些是我最感兴趣的。 现在,C ++可能是一个很好的开始,因为你可以用这种语言来抛出任何东西。 另外,C接近assembly。 如何使用纯C构造模拟exception并且不进行汇编? 最后,我听到有传闻说,由于速度方面的考虑,Google员工不会在某些项目中使用例外情况。 这只是一个谣言? 如果没有他们,任何事情都可以实现 谢谢。

将Visual Studio项目属性有效地用于多个项目和configuration

我一直使用Visual Studio构build的Visual Studio来configuration我的项目,通常使用属性表,以便几个项目将使用一个公共集合。 我的主要抱怨之一是pipe理多个项目,configuration和平台。 如果你只是用主GUI(右键点击项目 – >属性)做所有事情,它很快就会变得混乱,难以维护并容易出错(比如不能正确地定义一些macros,或者使用错误的运行库等)。 处理不同的人在不同的地方放置依赖库的事实(例如我的所有生活在“C:\ Libs \ [C,C ++] \ [lib-name] \”),然后经常pipe理这些库的不同版本不同的(发行版,debugging版,x86,x64等)也是一个大问题,因为它将时间设置在一个新系统上大大复杂化,然后存在版本控制问题,并且保持每个人的path不同。 。 属性表使这个更好一点,但我不能有一个工作表有不同的configuration和平台(下拉框变灰)的单独设置,导致我有许多工作表,如果inheritance按照正确的顺序做我想要的“x86”,“x64”,“debug”,“release”,“common”,“directories”(通过定义像BoostX86LibDir这样的用户macros来处理前面提到的依赖性问题)等等),如果以错误的顺序“x64”和“debug”之前的“common”)会导致像试图链接不正确的库版本或错误地命名输出的问题… 我想要的是一种处理所有这些分散的依赖关系的方法,并设置了一系列解决scheme中我所有项目所使用的“规则”,比如将输出库命名为“mylib- [vc90,vc100] – [x86 ,x64] [ – d] .lib“,而不必为每个单独的项目,configuration和平台组合执行所有操作,然后保持它们全部正确同步。 我知道移动到像CMake这样的完全不同的系统来创build所需的文件,然而这使得其他地方的事情变得复杂,即使是简单的任务,如添加一个新的文件到项目,然后需要额外的改变,这不是我完全满意,除非有一些与VS2010集成,可以跟踪这些变化。

是开始()==结束()任何空()向量?

我早就认为对于任何空的std::vector V , V.begin() == V.end() 。 然而,我在C ++规范中没有看到任何东西,这一切都是真实的。 这是否一定是真的,或者在大多数实现中恰好是真的?

我怎么知道我从stream中获取的图像格式?

我从一些Web服务获得一个字节stream。 这个字节stream包含图像的二进制date,我使用下面的方法将其转换为一个Image实例。 我需要知道我有什么样的形象。 它是一个简单的位图( *.bmp )或JPEG图像( *.jpg )或PNG图像? 我怎样才能find它? public static Image byteArrayToImage( byte[] bmpBytes ) { Image image = null; using( MemoryStream stream = new MemoryStream( bmpBytes ) ) { image = Image.FromStream( stream ); } return image; }

在不同的控制器动作方法之间传递数据

我正在使用ASP.NET MVC 4 。 我正试图从一个控制器传递数据到另一个控制器。 我没有得到这个权利。 我不确定这是否可能? 以下是我想要传递数据的源操作方法: public class ServerController : Controller { [HttpPost] public ActionResult ApplicationPoolsUpdate(ServiceViewModel viewModel) { XDocument updatedResultsDocument = myService.UpdateApplicationPools(); // Redirect to ApplicationPool controller and pass // updatedResultsDocument to be used in UpdateConfirmation action method } } 我需要将其传递给此控制器中的此操作方法: public class ApplicationPoolController : Controller { public ActionResult UpdateConfirmation(XDocument xDocument) { // […]