草庐IT

SpringMVC执行流程

全部标签

c# - 哪些方法可以让线程等待一个事件然后继续执行?

我有一个正在运行的线程,它委派了一些任务。当单个任务完成时,将引发一个事件,说明它已完成。这些任务需要按照特定的顺序运行,并且需要等待上一个任务完成。我怎样才能让线程等到它收到“任务完成”事件?(除了设置标志然后while循环轮询标志的明显事件处理程序之外) 最佳答案 我经常使用AutoResetEvent当我需要等待异步任务完成时等待句柄:publicvoidPerformAsyncTasks(){SomeClasssomeObj=newSomeClass()AutoResetEventwaitHandle=newAutoRese

c# - 在 C# 中的基本构造函数之前执行派生构造函数

我的问题是,我想将一个对象传递给派生类,但必须在基类构造函数之前完成,因为基类会立即调用派生类的Start()使用该对象的方法。这是基类的摘录(为方便起见,从BarcodeScanner重命名)。publicabstractclassMyBase{publicMyBase(){if(Initialize())this.Start();}publicabstractboolInitialize();publicabstractvoidStart();}这是我正在创建的派生类。classMyDerived:MyBase{privatestringsampleObject;publicMyD

c# - Process.StandardInput 或从 C# 代码执行的应用程序的编码问题

我对Process.StandartInput编码有疑问。我在我的Windows窗体应用程序中使用了一些进程,但输入应该是UTF-8。Process.StandardInput.Encoding是只读的,所以我不能将它设置为UTF-8,它会使用Windows默认编码,这会降低UTF-8中良好的native字符。程序中使用了两个进程:一个将输出写入文件,另一个读取。由于我可以将输出编码设置为UTF-8,因此该部分工作正常,但回读是我遇到问题的部分。我将包括我使用流程的部分。ProcessStartInfoinfo=newProcessStartInfo("mysql");info.Red

c# - QueueUserWorkItem() 和 BeginInvoke() 之间的区别是什么,用于执行不需要返回类型的异步事件

根据我的BeginInvoke()/EndInvoke()问题,Delegate.BeginInvoke()和使用QueueUserWorkItem()异步调用委托(delegate)之间在性能/其他方面是否存在重大差异? 最佳答案 我能想到的关于QueueUserWorkItem的主要事情是你必须使用WaitCallback委托(delegate)类型,如果你已经有一个SomeRandomDelegate实例和一些参数。好消息是你可以用闭包来解决这个问题:ThreadPool.QueueUserWorkItem(delegate{

c# - 在 C# .NET 2.0 中,反向执行 foreach 的简单方法是什么?

假设我有一个Dictionary对象:DictionarymyDictionary=newDictionary();现在我想以相反的顺序遍历字典。我不能使用简单的for循环,因为我不知道字典的键。foreach很简单:foreach(SomeObjectobjectinmyDictionary.Values){//Dostufftoobject}但是我怎样才能反过来执行呢? 最佳答案 字典或任何其他形式的哈希表没有顺序。所以你试图做的是毫无意义的:) 关于c#-在C#.NET2.0中,反

c# - 为什么我不能在 C# 中执行 ??=?

我经常发现自己在做:foo=foo??x;为什么我不能:foo??=x;编辑:我知道它不是语言的一部分……我的问题是“为什么不”?我发现重复“foo”的必要性令人不快并且可能容易出错。它看起来和下面一样丑陋:foo=foo+x; 最佳答案 当我想到的时候,foo=foo??x真的只是foo=foo!=null?foo:x到那时,+=的类比开始分崩离析。 关于c#-为什么我不能在C#中执行??=?,我们在StackOverflow上找到一个类似的问题: http

C# 屏幕流程序

最近,我一直在开发一个简单的屏幕共享程序。实际上,该程序基于TCP协议(protocol)并使用DesktopduplicationAPI-一项很酷的服务,支持非常快速的屏幕捕获,还提供有关的信息MovedRegions(只是改变了它们在屏幕上的位置但仍然存在的区域)和UpdatedRegions(已更改的区域)。Desktop副本有2个重要属性-2字节数组,一个用于previous-pixels的数组和一个NewPixels数组。每4个字节代表RGBA形式的一个像素,例如,如果我的屏幕是1920x1080,缓冲区大小是1920x1080*4。以下是我的策略的重要亮点在初始状态(第一次

c# - 为什么将代码保留在 'clean' 后面并在 XAML 中执行所有操作?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭12年前。保持代码“干净”有什么好处?很多次我在这里看到有人试图用XAML而不是隐藏代码来做同样的事情。他们唯一的原因是他们想保持他们的代码“干净”。如果我错了,请纠正我,但事实并非如此:XAML也被编译为BAML,然后无论如何都必须在运行时解析为代码。XAML可能存在更多运行时错误,因为它们不会在编译时被编译器拾取-来自不正确的拼写-这些错误也更难调试。背后已经有代码——不管你喜不喜欢Initializ

c# - 如何在调用 ShowDialog() 后继续执行代码

Form.ShowDialog()方法导致代码暂停,直到新调用的窗体关闭。我需要代码在调用ShowDialog()方法后继续运行。我在谷歌上搜索并阅读了有关使用backgroundworker的信息?但这是我第一次听说,以前从未使用过。Form2form2this=newForm2();form2this.ShowDialog();MessageBox.Show("Something");此代码在单击按钮后执行,我如何仍然调用ShowDialog来阻止用户与主窗体交互但仍允许主窗体继续其工作?很抱歉,如果它被讨论过,但我发现的一切似乎都很难执行这样一个简单的任务。我真的很惊讶它没有包含

在自己的线程中执行的线程之间的 C# 事件(如何)?

我想要两个线程。我们称他们为:线程A线程B线程A触发一个事件,线程B监听这个事件。当线程B事件监听器被执行时,它是用线程A的线程ID执行的,所以我猜它是在线程A中执行的。我想做的是能够向线程B触发事件,说类似这样的话:“嘿,数据已经为您准备好了,您现在可以处理它了”。这个事件必须在它自己的线程中执行,因为它使用只有他可以访问的东西(比如UI控件)。我该怎么做?谢谢你的帮助。 最佳答案 您需要将信息编码回UI线程。通常,您会在事件处理程序中处理它。例如,假设线程A是您的UI线程-当它订阅线程B中的对象上的事件时,事件处理程序将在线程B