Windows窗体中的异步执行

我正在用C#编写Windows窗体应用程序,只需单击一下按钮即可执行许多长时间运行的过程。 这使GUI冻结直到执行。 此外,在执行期间,我将信息和状态记录到列表框中。 但是,直到执行完成,状态才会在列表框中更新。 我应该如何编码,以便状态在执行中与列表框一起更新,以便GUI不会冻结。 我是线程新手。 能否举一些如何做到这一点的例子? 在此先感谢您的帮助。

如何以richtext格式向Outlook发送电子邮件?

通过分配text / html内容类型字符串,以HTML格式发送电子邮件(到Outlook)非常有用: using (MailMessage message = new MailMessage()) { message.From = new MailAddress(“–@—.com”); message.ReplyTo = new MailAddress(“–@—.com”); message.To.Add(new MailAddress(“—@—.com”)); message.Subject = “This subject”; message.Body = “This content is in plain text”; message.IsBodyHtml = false; string bodyHtml = “This is the HTML content.”; using (AlternateView altView = AlternateView.CreateAlternateViewFromString(bodyHtml, new ContentType(MediaTypeNames.Text.Html))) { message.AlternateViews.Add(altView); SmtpClient smtp = […]

在检查取消时发送背景工作人员睡觉

我有一个后台工作者,通过ReportProgress定期更新GUI。 更新定期发生,例如每5秒一次,或者可能是20秒。 为了在设定的时间执行更新,我将工作进程发送到hibernate状态一段时间,当它唤醒时,它会使用新信息更新GUI。 工作人员支持取消,在睡觉之外取消正确。 我希望能够在等待期间调用取消,但是将线程发送到睡眠状态会使这变得不可能。 我假设我将不得不调用一个循环并检查取消作为循环的一部分来模拟线程睡眠。 实现这一目标的最佳方法是什么,我的尝试完全取消了。 long counter = 0; long sleepfor = timelinespeed*1000; int timelinespeed = 10; while (counter != sleepfor) { Thread.Sleep(1); counter++; if (bkgwk.CancellationPending) { cancelled = true; e.Cancel = true; bkgwk.Dispose(); break; } }

使用Linq对列表及其所有嵌套对象进行排序

有一个组织有几个部门,每个部门都有一些员工。 我的对象结构如下所示: public class Organisation { public int Code { get; set; } public string Type { get; set; } public string Name { get; set; } public List Departments { get; set; } } public class Department { public int Code { get; set; } public string Name { get; set; } public List […]

C#中的Point类

我对C#很陌生,我正在努力做一些事,但没有太大的成功。 我正在尝试使用Point类(带坐标的那个)。 这是代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace app2{ class Program{ static void Main(string[] args){ Point p1 = new Point(); p1.X = 7; p1.Y = 6; Console.WriteLine(p1.X); Console.WriteLine(p1.Y); Console.ReadLine(); } } } 错误是: 找不到类型或命名空间Point 我一直在Java中以非常类似的方式使用这个类,我应该声明我自己的Point类/函数返回X和Y坐标吗?

获得处置关闭 – 标记方法是安全的

这是关于ReSharper的警告“进入废弃封闭”,这通常在后来处置的物体用于lambda时出现。 在C#中获得处置关闭? 更详细地讨论了这一点。 我的问题是:对于采用这种lamdbas并立即执行它们的方法(所以你可以确定它们总是在处理掉所述对象之前执行): 有没有办法将它们标记为安全,以便使用该方法的任何代码都不再产生这些警告? 例: using (var myObject = new MyDisposableObject()) { DoThisTwice(() => myObject.DoSomething()); } … void DoThisTwice(Action do) { do(); do(); } DoThisTwice接受委托(或lambda)并同步执行它。 到方法返回时,将不再执行lambda。 只有这样才能处理myObject ,所以我们很高兴。 我们可以用注释来标记调用DoThisTwice的行,但必须以类似的方式在所有地方使用该方法完成。 相反,我想将DoThisTwice标记为安全,因此Resharper不会为该方法的任何调用者显示任何警告。

为什么AppDomainSetup.ShadowCopyFiles是一个字符串?

从文档 : 包含字符串值“true”的String,表示启用了卷影复制; 或“false”表示阴影复制已关闭。 从1.1开始就是这样。 谁能摆脱任何光明? 我reflection了吸气剂和制定者以获得良好的衡量标准: public string ShadowCopyFiles { get { return this.Value[8]; } set { if ((value != null) && (string.Compare(value, “true”, StringComparison.OrdinalIgnoreCase) == 0)) { this.Value[8] = value; } else { this.Value[8] = null; } } } //The referenced Value property… internal string[] Value { get { if (this._Entries == null) […]

使Camera LookDirection看起来正面

如何在WPF查看3D模型的前端? 我很困惑为LookDirection设置XYZ。 我不知道当我设置xyz时会发生什么,我不知道相机在哪里看。 对于UpDirection我不知道同样的事情。 以下是我的相机属性: camera.Position = new Point3D(100, 100, 150); camera.LookDirection = new Vector3D(-100, -100, -100); camera.UpDirection = new Vector3D(0, 0, 1); 问题是相机从后面看。 模型显示为下面的立方体。 如何使它看起来正面? 另请解释如何设置xyz。 我知道什么属性做但我无法想象他们。 我认为X是从右到左.Y是深度。 Z是最多的。

ASP.NET MVC显示日期没有时间

我的模型字段以下列方式装饰: [DataType(DataType.Date)] [Display(Name = “Date of birth”)] public string DateOfBirth { get; set; } 当我想使用以下代码在视图中显示值时: m.DateOfBirth) %> 问题是日期与其时间值一起显示。 我想知道为什么它不考虑DateType属性并且只显示没有时间的日期值。 我知道我可以为DateTime创建一个显示模板,但在其他情况下,除了出生日期之外,我想要显示时间和日期。 如何解决问题?

UserControl中的AJAX ScriptManager

我有一个UserControl,其中包含一个UpdatePanel,它包含一些其他控件。 UserControl将用于已有ScriptManager的一些页面和其他没有ScriptManager的页面。 我希望UserControl自动带来自己的ScriptManager(如果不存在)。 我已经尝试过ScriptManager.GetCurrent,如果它返回null,我创建自己的ScriptManager并将其插入到Form中,但我无法在UserControl的生命周期中尽早找到一个位置来运行此代码。 我一直收到错误“带ID的控件’uPnlContentList’需要页面上的ScriptManager。ScriptManager必须出现在任何需要它的控件之前。” 每次我尝试加载页面。 我尝试运行我的代码的地方是OnInit,CreateChildControls和PageLoad,它们永远不会被调用,因为它在到达它们之前就已经死了。 我应该把这张支票放在哪里?