小编Son*_*nül的帖子

12
推荐指数
2
解决办法
6335
查看次数

使用Task.Run()写入控制台失败

我的一位同事在我们的代码中发现了一个问题,并且花了一段时间才能确切地查找正在发生的事情,但最好通过这个简单的例子来证明:

// Fails
class Program
{
    static void Main(string[] args)
    {
        Task.Run(() => Console.WriteLine("Hello World"));
        Console.ReadKey();
    }
}

// Works fine
class Program
{
    static void Main(string[] args)
    {
        Console.Write(String.Empty);
        Task.Run(() => Console.WriteLine("Hello World"));
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

从中解决这个问题很明显,从主线程到任何地方写入控制台都会允许后台线程写入控制台,但是我们很难理解为什么会发生这种情况.任何人都可以解释从主线程写到控制台的内容是什么,第一个片段没有?

c# .net-4.5

12
推荐指数
2
解决办法
2326
查看次数

如何将两个字符串(日期和时间)组合到单个DateTime

我有两个字符串:

string one = "13/02/09";
string two = "2:35:10 PM";
Run Code Online (Sandbox Code Playgroud)

我想将这两者结合在一起并转换为DateTime.

我尝试了以下但它不起作用:

DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy HH:mm:ss tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

我能做些什么来完成这项工作?

c# string datetime parsing

12
推荐指数
1
解决办法
3万
查看次数

C#中的序列化和对象版本控制

如果我想序列化一个对象,我必须使用[Serializable]属性,所有成员变量都将写入该文件.我不知道如何进行版本控制,例如,如果我添加一个新的成员变量(重命名一个变量或只是删除一个变量),然后打开(反序列化)该文件,我如何确定对象/文件版本,这样才能正确设置新成员还是进行某种迁移?如何确定变量是否在加载期间初始化(由反序列化器忽略).

我知道有版本容忍方法,我可以用[OptionalField(VersionAdded = 1)]属性标记变量.如果我打开一个旧文件,框架将忽略这个可选(新变量),它将只是零/ null.但是,我如何确定变量是通过加载初始化还是被忽略.

我可以将类/对象版本号写入流中.使用ISerializable方法并在constructor(SerializationInfo oInfo, StreamingContext context)方法中读取此版本号.这将告诉我流中的类版本是什么.

但是我预计C#中的流式传输框架已经实现了这种版本控制.我试图从中获取程序集版本,SerializationInfo但它始终设置为当前版本而不是保存对象时使用的版本.

什么是首选方法?我在网上发现了很多文章,但我找不到一个很好的解决方案来解决版本问题......

任何帮助表示感谢,谢谢,深渊

.net c# versioning migration serialization

12
推荐指数
1
解决办法
4104
查看次数

无法使用MySql + MVC4查找或加载已注册的.Net Framework数据提供程序

当我们尝试使用Azure Mysql DB运行MVC4项目时,我们收到以下错误.

在Web.Config文件中,我们有以下内容,

<DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
Run Code Online (Sandbox Code Playgroud)

错误:

无法找到或加载已注册的.Net Framework数据提供程序.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Configuration.ConfigurationErrorsException:无法找到或加载已注册的.Net Framework数据提供程序.

来源错误:

Line 96:             if (objectQuery != null && !string.IsNullOrEmpty(path))
Line 97:             {
Line 98:                 return objectQuery.Include(path);
Line 99:             }
Line 100:

Source File: C:\Phase2\FreeLance\FreeLance\Framework\Data\FreeLance.Data.Framework\EntityFramework\Extensions.cs    Line: 98 

Stack Trace: 


[ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider.]
   System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) +2238858
   System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +143
   System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) +641
   System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, …
Run Code Online (Sandbox Code Playgroud)

c# mysql entity-framework azure asp.net-mvc-4

12
推荐指数
1
解决办法
3万
查看次数

在这种情况下,非泛型方法不能与类型参数一起使用是什么意思?

我有以下类和方法:

public class UserManager<TUser, TKey> : IDisposable
    where TUser : class, global::Microsoft.AspNet.Identity.IUser<TKey>
    where TKey : global::System.IEquatable<TKey> {

   public virtual Task<TUser> FindByIdAsync(TKey userId);
Run Code Online (Sandbox Code Playgroud)

和:

private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        set
        {
            _userManager = value;
        }
    }

public class ApplicationUserManager : UserManager<ApplicationUser, int>
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
Run Code Online (Sandbox Code Playgroud)

我试图像这样调用这个方法:

var user = await UserManager.FindByIdAsync<ApplicationUser,int>(99);
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

非通用方法

'Microsoft.AspNet.Identity.UserManager.FindByIdAsync(int)'不能与类型参数一起使用

c#

12
推荐指数
2
解决办法
3万
查看次数

PropertyInfo.DeclaringType真的可以为null吗?

我正在使用ReSharper(旧版本),当我使用PropertyInfo.DeclaringType它时它常常警告我null.

在第一眼和第二眼看来,这对我没有意义.这是真的,还是ReSharper有点愚蠢,并没有注意到它是一个PropertyInfo,而不是一般MemberInfo

c# reflection resharper

12
推荐指数
2
解决办法
860
查看次数

如何从dataGridView隐藏特定列?

如何DataGridview在能够使用其值的同时隐藏特定列及其标题?(只是没有显示).以下代码不起作用.

 gridview.Rows[e.RowIndex].Cells[11].Visible = false;
Run Code Online (Sandbox Code Playgroud)

c# winforms

11
推荐指数
2
解决办法
4万
查看次数

Web浏览器禁用所有音频输出 - 从在线广播到youtube

我的网络浏览器:

XAML:

//...
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
//...
<my:WindowsFormsHost Name="windowsFormsHost"/>
Run Code Online (Sandbox Code Playgroud)

C#背后的代码:

System.Windows.Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser();
windowsFormsHost.Child = Browser;
Run Code Online (Sandbox Code Playgroud)

我的问题是如何禁用所有音频输出.

我找到了这个:

C#:

private const int Feature = 21; //FEATURE_DISABLE_NAVIGATION_SOUNDS
private const int SetFeatureOnProcess = 0x00000002;

[DllImport("urlmon.dll")]
[PreserveSig]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(int featureEntry,
  [MarshalAs(UnmanagedType.U4)] int dwFlags, 
  bool fEnable);
Run Code Online (Sandbox Code Playgroud)

它很好,但是这段代码只能禁用"咔嗒"声,所以在这种情况下它的那种无用.

我只想从我的应用程序100%静音,没有声音.

我已经读过,在这个webbrowser中,它需要通过Windows Sounds来完成,但我真的不知道我在代码中无法做到这一点.

c# browser wpf

11
推荐指数
1
解决办法
5718
查看次数

调试在运行时链接的dll

对于模块化,我在运行时链接到我的解决方案中的DLL,而不是编译时间以允许我独立更新它.当我在库项目中放置断点时,在链接类时不会触发这些断点,并且会创建一个类型.

作为参考,这是反射代码:

Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll");
Type engineCoreType = a.GetType("Core.EngineCore");
object instance = Activator.CreateInstance(engineCoreType);
Run Code Online (Sandbox Code Playgroud)

Visual Studio是否可以在此方案中提供其常规调试工具?我该如何配置?

c# reflection visual-studio visual-studio-debugging visual-studio-2012

11
推荐指数
2
解决办法
3159
查看次数