在C#中实现生产者/消费者模式

如何使用事件和代理在C#中实现Producer / Consumer模式? 在使用这些设计模式时,我需要注意什么? 我需要注意哪些边缘情况?

如何XML序列化字典

我已经能够以这种方式序列化IEnumerable: [XmlArray(“TRANSACTIONS”)] [XmlArrayItem(“TRANSACTION”, typeof(Record))] public IEnumerable Records { get { foreach(Record br in _budget) { yield return br; } } } 但是,我意识到现在我需要一个包含集合Dictionary (RecordCollection实现IEnumerable)的Dictionary 。 我怎样才能做到这一点?

跨子域的表单身份validation

当身份validation发生在子域而不是父域时,是否可以跨子域validation用户? 例如: 用户登录到site1.parent.com,然后我们需要将它们发送到reporting.parent.com。 即使在子域中发生登录,我是否可以对报告站点进行身份validation? 到目前为止,我所做的所有研究都让用户首先登录到父域,然后每个子域都可以访问身份validationcookie。

await Task 和Task .Result有什么区别?

public async Task GetName(int id) { Task nameTask = Task.Factory.StartNew(() => { return string.Format(“Name matching id {0} = Developer”, id); }); return nameTask.Result; } 在上面的方法return语句我使用Task.Result属性。 public async Task GetName(int id) { Task nameTask = Task.Factory.StartNew(() => { return string.Format(“Name matching id {0} = Developer”, id); }); return await nameTask; } 我在这里使用等待任务。 如果我认为await将释放调用线程但是Task.Result将阻止它,我会不会错,它会是正确的吗?

将项添加到WPF ListView中的列

我现在一直在努力将项目添加到ListView 2列。 在我的Windows窗体应用程序中,我有这样的事情: // In my class library: public void AddItems(ListView listView) { var item = new ListViewItem {Text = “Some Text for Column 1”}; item.SubItems.Add(“Some Text for Column 2”); listView.Items.Add(item); } 然后我会从Form.cs调用这个类。 我怎么能在WPF中这样做? 最好,我不想使用大量的XAML。

MySqlCommand Command.Parameters.Add已过时

我在visual studio 2010中制作了一个C#windows Form Application。 该应用程序正在连接到mysql数据库,我想在其中插入数据。 我现在有这部分代码: MySqlConnection connection; string cs = @”server=server ip;userid=username;password=userpass;database=databse”; connection = new MySqlConnection(cs); connection.Open(); MySqlCommand command = new MySqlCommand(); string SQL = “INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (‘@mcUserName’, ‘@mcUserPass’, ‘@twUserName’, ‘@twUserPass’)”; command.CommandText = SQL; command.Parameters.Add(“@mcUserName”, mcUserNameNew); command.Parameters.Add(“@mcUserPass”, mcUserPassNew); command.Parameters.Add(“@twUserName”, twUserNameNew); command.Parameters.Add(“@twUserPass”, twUserPassNew); command.Connection = connection; command.ExecuteNonQuery(); connection.Close(); […]

将C#字符串传递给C ++并将C ++结果(字符串,字符*等)传递给C#

我尝试了不同的东西,但我对Interop很生气。 (这里的单词string不是指变量类型,而是“char的集合”):我有一个非管理的C ++函数,在dll中定义,我试图从C#访问,这个函数有一个字符串参数和一个字符串返回值,如下所示: string myFunction(string inputString) { } C ++方面应该是什么字符串? 和C#one? 什么参数需要DllImport呢?

“如果object为null,则为null;如果object为null,则为object.member”的快捷方式

我正在尝试编写一个通用的扩展方法,让我这样做: this.startDate = startDateXAttribute.NullOrPropertyOf(() => { return DateTime.Parse(startDateXAttribute.Value); }); NullOrPropertyOf()在null对象上使用(例如,如果startDateXAttribute为null ),则返回null ,如果它不为null ,则返回Func的结果。 这种扩展方法会是什么样的?

从非管理员应用程序以管理员身份运行流程

从未以管理员身份运行的应用程序,我有以下代码: ProcessStartInfo proc = new ProcessStartInfo(); proc.WindowStyle = ProcessWindowStyle.Normal; proc.FileName = myExePath; proc.CreateNoWindow = false; proc.UseShellExecute = false; proc.Verb = “runas”; 当我调用Process.Start(proc)时,我没有弹出请求以管理员身份运行的权限,并且exe不以管理员身份运行。 我尝试将app.manifest添加到myExePath中找到的可执行文件,并将requestedExecutionLevel更新为 使用更新的app.manifest,在Process.Start(proc)调用中,我得到一个exception,“请求的操作需要提升。” 为什么.Verb操作没有设置管理员权限? 我正在测试Windows Server 2008 R2 Standard。

右对齐PdfPCell中的文本

我有一个生成PDF发票的C#应用​​程序。 在此发票中是项目和价格表。 这是使用PdfPTable和PdfPCell生成的。 我希望能够右对齐价格列,但我似乎无法 – 文本总是在单元格中左对齐。 这是我创建表的代码: PdfPTable table = new PdfPTable(2); table.TotalWidth = invoice.PageSize.Width; float[] widths = { invoice.PageSize.Width – 70f, 70f }; table.SetWidths(widths); table.AddCell(new Phrase(“Item Name”, tableHeadFont)); table.AddCell(new Phrase(“Price”, tableHeadFont)); SqlCommand cmdItems = new SqlCommand(“SELECT…”, con); using (SqlDataReader rdrItems = cmdItems.ExecuteReader()) { while (rdrItems.Read()) { table.AddCell(new Phrase(rdrItems[“itemName”].ToString(), tableFont)); double price = Convert.ToDouble(rdrItems[“price”]); PdfPCell […]