Tag: .net 4.0

System.Threading.Timer一段时间后才开火

我有一个Windows服务应用程序。 并通过在控制台模式下运行来调试它。 在这里http://support.microsoft.com/kb/842793写道,Timers.Timer有一个错误,而不是在Windows服务中触发。 解决方法是使用Threading.Timer本文适用于.NET 1.0和1.1 我使用的是.NET 4,但经过一段时间Threading.Timer也没有开火。 那可能是什么原因呢? 您能建议什么作为解决方法? 谢谢, 最好的祝福 编辑:我将计时器从Threading.Timer更改为Timers.Timer,它没有任何问题。

如何检查.Net Framework是否已安装

在开始我的应用程序之前(在表单加载上)我想检查并确保在机器上安装.NET框架(3.5或更高版本) – 如果不是我想提示用户下载并安装它(带有INTERNET的简单MessageBox)链接到Microsoft WebPage是不是最好的主意?)所以,这实际上需要两个问题…… a)如何安装.NET FrameWork 3.5或更高版本,如何确定? (我不信任或只想找C:\ Program Files \ Microsoft.NET文件夹,似乎容易出错?不会看到这是非常关键的,在C#中必须有一个很好的方法来确定什么版本用户在他的机器上运行的.NET? 我只是不知道如何.. b)如何在MessageBox中粘贴INTERNET LINK(超链接?)? 因此,如果用户没有安装.NET框架(1.1或2.0),我可以让他们只需点击链接即可下载吗? 任何帮助/提示将不胜感激。 谢谢,丁

使用TPL实现经典异步模式

我正在尝试为WF 4实现自定义TrackingParticipant。我可以编写Track方法,但我的实现速度很慢。 如何使用.NET 4.0的任务并行库(TPL)实现Begin / EndTrack覆盖? 我看过TPL和Traditional .NET异步编程,但我不知道如何在这里应用它。 请注意,TrackingParticipant是.NET的一部分,并且具有使用虚拟方法预定义的经典异步模式。 public class MyTrackingParticipant : TrackingParticipant { protected override IAsyncResult BeginTrack( TrackingRecord record, TimeSpan timeout, AsyncCallback callback, object state) { // ? } protected override void EndTrack(IAsyncResult result) { // ? } protected override void Track(TrackingRecord record, TimeSpan timeout) { // synchronous code to be called } […]

这个PInvoke代码是否正确可靠?

在这个问题中,我搜索了一个解锁文件的简单解决方案。 感谢所有的评论和回答,我找到了PInvoking DeleteFile的简单解决方案。 它工作,但因为我从来没有通过PInvoke(Win32)使用文件操作,我不知道是否有一些陷阱或是否有另一种方法调用DeleteFile来删除文件的备用流。 我还不知道的是,我是否必须在try / catch中包装调用,或者仅仅查看布尔结果就足够了。 在我的测试中,没有提出exception,但我不知道在现实世界中会发生什么。 public class FileUnblocker { [DllImport(“kernel32”, CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool DeleteFile(string name ); public bool Unblock(string fileName) { return DeleteFile(fileName+ “:Zone.Identifier”); } } 这段代码看起来可靠吗? 更新 我发布了一个不完整的方法(unblock方法没有将“Zone.Identifier”文字连接到文件名)。 我现在纠正了这个,抱歉。

System.MethodAccessException:尝试通过安全透明方法访问安全性关键方法在所有应用程序上失败

您好,并提前感谢您的帮助,我知道这个问题或类似的问题已经发布,经常与MVC 3应用程序有关。 但是,每当我尝试使用.net 4.0目标框架从visual web developer express 2010中启动任何应用程序时,我都会收到此错误消息。 确切的错误消息是: 尝试使用安全透明方法’System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String,System.Guid)’来访问安全关键方法’System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String,System.Guid) )’失败’。 程序集“System.ServiceModel.Internals,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”标有AllowPartiallyTrustedCallersAttribute,并使用2级安全透明度模型。 2级透明度导致AllowPartiallyTrustedCallers程序集中的所有方法默认情况下变为透明,这可能是此exception的原因。 堆栈跟踪: [MethodAccessException: Attempt by security transparent method ‘System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String, System.Guid)’ to access security critical method ‘System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String, System.Guid)’ failed. Assembly ‘System.ServiceModel.Internals, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level […]

托管结构的大小

.NET 4.0 Framework引入了用于读取和写入内存映射文件的类 。 这些类以读取和编写结构的方法为中心。 这些不是编组的,而是以在托管内存中布局的forms从文件复制到文件。 假设我想使用以下方法将两个结构顺序写入内存映射文件: [StructLayout(LayoutKind.Sequential, Pack = 1)] struct Foo { public char C; public bool B; } [StructLayout(LayoutKind.Sequential, Pack = 1)] struct Bar { } static void Write(T1 item1, T2 item2) where T1 : struct where T2 : struct { using (MemoryMappedFile file = MemoryMappedFile.CreateNew(null, 32)) using (MemoryMappedViewAccessor accessor = file.CreateViewAccessor()) […]

.NET 4任务并行库可以使用COM对象吗?

这是“这是可能的,如果是这样,你能给我一个简单的例子,因为我找不到一个在线的吗?” 有点问题。 我有许多完全独立的(即“令人尴尬的并行”)进程,我想使用C#在.NET Framework 4中使用任务并行库并行运行。 其中一些过程需要使用可通过COM / OLE自动化访问的软件。 具体来说,有一个Parallel.Foreach()循环,它将任务从项目列表中分开,基本上在Parallel.Foreach中调用一个不同的函数来处理处理(因此这些函数中的一些使用COM库来工作)。 这可能吗? 谢谢。

IEnumerable与IQueryable的业务逻辑或DAL返回类型

我知道之前已经问过这些问题,我首先会列出其中一些问题(到目前为止我已阅读过的): IEnumerable vs IQueryable List,IList,IEnumerable,IQueryable,ICollection,哪个是最灵活的返回类型? 返回IEnumerable 与IQueryable IEnumerable 作为返回类型 https://stackoverflow.com/questions/2712253/ienumerable-and-iqueryable 业务逻辑与代码的视图 WPF IEnumerable vs IQueryable 作为DataSource IEnumerable VS IList VS IQueryable 我的服务应该返回什么界面? IQueryable,IList,IEnumerable? 我应该从DAL返回IEnumerable 还是IQueryable ? 正如你所看到的那样,关于这个主题的SO本身有一些很好的资源,但是有一个问题/部分的问题,我仍然不确定是否已经阅读了这些内容。 我主要关注IEnumerable和IQueryable问题,更具体地说是DAL和它的消费者之间的耦合 。 我已经找到了关于这两个接口的不同观点。 但是,我关注的是DAL返回IQueryable的含义。 据我所知,IQueryable建议/暗示有一个Linq提供商。 这是第一个问题 – 如果DAL突然需要来自非Linq提供的数据源,该怎么办? 以下方法可行,但它更像是黑客攻击吗? public static IQueryable GetAll() { // this function used to use a L2S context or similar to return data […]

有没有办法将任务并行库(TPL)与SQLDataReader一起使用?

我喜欢TPL中Parallel.For和Parallel.ForEach扩展方法的简单性。 我想知道是否有办法利用类似的东西,甚至是稍微高级的任务。 下面是SqlDataReader的典型用法,我想知道是否可能,如果是这样,如何用TPL中的东西替换下面的while循环。 因为读者无法提供固定数量的迭代,所以不能使用For扩展方法,这样就可以处理我将收集的任务。 我希望有人可能已经解决了这个问题,然后在ADO.net上做了一些事情。 using (SqlConnection conn = new SqlConnection(“myConnString”)) using (SqlCommand comm = new SqlCommand(“myQuery”, conn)) { conn.Open(); SqlDataReader reader = comm.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { // Do something with Reader } } }

在.net 4.0上执行应用程序时,在.net 2.0下编译

假如说: 下面的C#源代码是在.NET 2.0(CLR 2.0)下编译的; 和 上面的应用程序使用下面列出的app.config ; 和 只有.NET 4.0(CLR 4.0)安装在执行应用程序的客户端的环境中, 然后在内部加载哪个版本的.NET来在客户端环境中执行应用程序? 描述 下面的控制台应用程序将在控制台中显示其CLR版本为v4.0.30319 ,但@Reed Copsey对堆栈的回答( CLR 2.0与4.0性能? )表明在这种情况下加载了.NET 2.0。 此外,在MSDN上,它表示当useLegacyV2RuntimeActivationPolicy设置为false false : 使用.NET Framework 4及更高版本的默认激活策略, 即允许旧版运行时激活技术将CLR版本1.1或2.0加载到该过程中。 尽管app.config具有.NET 4.0配置,但听起来像是加载了.NET 2.0。 我误解了什么吗? 资源 C#源代码 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string version = Environment.Version.ToString(); Console.WriteLine(version); } } } app.config