Tag: .net

具有索引器和名为“Item”的属性的类

是否可以在.NET 4中创建一个类: 一个索引器, 一个名为“Item”的属性? 例如,这个C#类不会为我编译: public class MyClass { public object Item { get; set; } public object this[string index] { get { return null; } set { } } } 编译器给出错误CS0102 : “MyClass”类型已包含“Item”的定义 虽然我只是明确定义Item一次。

在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand

所以我上周有这个工作。 至少,我以为我做到了! DataGridView更新 然后我今天又开始研究这个项目了 在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand。 上 scDB.SSIS_Configurations_StagingDataTable table = (scDB.SSIS_Configurations_StagingDataTable)stagingGrid.DataSource; myStagingTableAdapter.Update(table); StagingTableAdapter有一个额外的查询,它将’filter’作为参数。 那用于填充DataGridView 。 在创建该查询的向导中,我看到“生成了更新”。 我发现大多数有此错误的post都要求使用命令构建器生成更新语句。 我该怎么办?

事件处理程序不是线程安全吗?

所以我已经阅读过,而不是直接调用事件 if (SomeEvent != null) SomeEvent(this, null); 我应该这样做 SomeEventHandler temp = SomeEvent; if (temp != null) temp(this, null); 为什么会这样? 第二个版本如何变得线程安全? 什么是最佳做法?

取消不接受CancellationToken的异步操作的正确方法是什么?

取消以下内容的正确方法是什么? var tcpListener = new TcpListener(connection); tcpListener.Start(); var client = await tcpListener.AcceptTcpClientAsync(); 简单地调用tcpListener.Stop()似乎会导致ObjectDisposedException ,而AcceptTcpClientAsync方法不接受CancellationToken结构。 我完全错过了一些明显的东西吗

AddEventHandler使用reflection

我有这段代码不起作用: public CartaoCidadao() { InitializeComponent(); object o = WebDAV.Classes.SCWatcher.LoadAssembly(); MethodInfo method = this.GetType().GetMethod(“Inserted”, BindingFlags.NonPublic | BindingFlags.Instance); EventInfo eventInfo = o.GetType().GetEvent(“CardInserted”); Type type = eventInfo.EventHandlerType; Delegate handler = Delegate.CreateDelegate(type, this , method); eventInfo.AddEventHandler(o, handler); } void Inserted(string readerName, string cardName) { System.Windows.Forms.MessageBox.Show(readerName); } Event CardInserted存在于另一个DLL文件中,对象“o”加载OK。 委托处理程序具有效果后的值。 我只能解雇这个事件。

为什么我会收到此错误:“跨线程操作无效:控制从其创建的线程以外的线程访问的lbFolders。”?

这令我感到困惑,也许有人可以用我的无知来照亮教育之光。 这是在C#windows应用程序中。 我从一个线程访问列表框的内容。 当我尝试像这样访问它时 prgAll.Maximum = lbFolders.SelectedItems.Count; 我收到了错误。 但是,这是我没有得到的部分。 如果我注释掉那一行,那就是下一行 foreach (string dir in lbFolders.SelectedItems) 执行得很好。 编辑:像往常一样,我缺乏沟通技巧。 让我澄清一下。 我知道从除了创建它们之外的线程访问GUI项会导致问题。 我知道访问它们的正确方法是通过委托。 我的问题主要在于:为什么我可以正常访问和迭代SelectedItems对象,但是当我尝试获取(未设置)它的Count属性时,它会爆炸。

由于SystemEvents.OnUserPreferenceChanged事件,WinForms应用程序挂起

我一直在处理我的客户端安装中的一个奇怪的应用程序挂起。 在尝试了几件事之后,我得出的结论是,如果没有转储,它将无法工作。 所以我在挂机时从我的一个客户那里收了一个转储。 我必须注意,它只发生在我的安装中而不是我的开发计算机中。 在我的转储中,我看到SystemEvents.OnUserPreferenceChanged事件导致我的UI线程阻塞等待线程,这不再是消息。 在这里和谷歌搜索后,我发现有些人我们也遇到了这个问题。 我上下我的代码,看看我们是否有机会在非UI线程上创建控件或表单,但没有运气。 这是我的!clrstack 0012ee5c 7c90e514 [HelperMethodFrame_1OBJ: 0012ee5c] System.Threading.WaitHandle.WaitOneNative(Microsoft.Win32.SafeHandles.SafeWaitHandle, UInt32, Boolean, Boolean) 0012ef08 792b68af System.Threading.WaitHandle.WaitOne(Int64, Boolean) 0012ef24 792b6865 System.Threading.WaitHandle.WaitOne(Int32, Boolean) 0012ef38 7b6f1a4f System.Windows.Forms.Control.WaitForWaitHandle(System.Threading.WaitHandle) 0012ef4c 7ba2d68b System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean) 0012efec 7b6f33ac System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[]) 0012f020 7b920bd7 System.Windows.Forms.WindowsFormsSynchronizationContext.Send(System.Threading.SendOrPostCallback, System.Object) 0012f038 7a92ed62 Microsoft.Win32.SystemEvents+SystemEventInvokeInfo.Invoke(Boolean, System.Object[]) 0012f06c 7a92dc8f Microsoft.Win32.SystemEvents.RaiseEvent(Boolean, System.Object, System.Object[]) 0012f0b8 7a92e227 Microsoft.Win32.SystemEvents.OnUserPreferenceChanged(Int32, IntPtr, IntPtr) […]

如何将当前用户信息传递给DDD中的所有图层

以前曾问过类似的问题,但不完全相同(除非我错过了) 我想通过我的服务,域,域事件,域事件处理程序传递IUserInfo类实例… 什么是最好的方法。 我是不是该 使用IoC通过将其注册到Httpcontext.Current.session [“CurrentUser”]的实例来注入它; 将数据添加到当前线程。 任何其他方式 我被困在域事件处理程序中,我希望将数据用于审计以及发送电子邮件。 我希望能够在我的应用程序中的任何位置使用CurrentUser信息。 随着线程被合并的线程,我怀疑线程的重用是否会重置数据。 如果没有,请告诉我如何使用线程传递IUser实例。 问候, 损伤

Json.NET在返回json序列化字符串时添加反斜杠

我试图使用Json.NET将列表序列化为json字符串,但返回字符串中有反斜杠,这反过来又失败了json解析。 var x = from d in entities.Books.ToList() select new { ID = d.ID, BookName = d.BookName }; return JsonConvert.SerializeObject(x.ToList()); 上面的代码返回 “[{\”ID\”:1,\”BookName\”:\”MVC Music Store – Tutorial – v3.0\”},{\”ID\”:2,\”BookName\”:\”Pro.ASP.NET.MVC.3.Framework\”},{\”ID\”:3,\”BookName\”:\”Application Architecture Guide v2\”},{\”ID\”:4,\”BookName\”:\”Gang of Four Design Patterns\”},{\”ID\”:5,\”BookName\”:\”CS4 Pocket Reference\”}]” 它失败了所有JSON解析。 我该如何删除它们。

使用C#中的LibTiff(访问平铺的TIFF图像)

我想使用LibTiff来访问非常大的TIFF文件。 我需要多个页面和图块等function,所以LibTiff似乎是正确的方法。 任何人都可以帮助我如何使用C#中的LibTiff? 我找到了一些链接(比如blog.bee-ee ,其中包含部分代码。但是我不能超越一个版本。我看过FreeImage但发现它不合适(图片大约800 MPixel 8或16)位灰度 – > 800-1600 MByte)大小,我无法在32位环境中将其加载到内存中) 我在C / C ++方面很有经验,但还没有在C#中。 任何人都可以帮我一个包装或一些提示吗? 注意:我需要页面来访问tiff中的金字塔平面(多分辨率),以及256×256的图块,以便快速访问图像的不同部分而无需立即加载它。 [编辑] LibTIFF.NET解决方案对我来说似乎最实用。 我现在正在将它集成到产品开发中,它可以让我从进出被管理内存中省去很多麻烦。 我还没有尝试过’回调’function,这似乎可以通过.net方式很好地解决。 感谢stackoverflow的帮助[/编辑]