小编Aus*_*tin的帖子

SplitContainer ISupportInitialize问题:VS2010针对.NET 3.5

在VS2010中,我有一个针对.NET Framework 4.0的项目,然后必须恢复到目标v.3.5.一旦发生这种情况,我所拥有的SplitContainer对象将无法显示并实际抛出错误:"无法将类型为'System.Windows.Forms.SplitContainer'的对象强制转换为'System.ComponentModel.ISupportInitialize'."

现在,我做了一些挖掘,发现3.5实际上并没有在SplitContainer上使用ISupportInitialize,而是在.NET 4.0中.我想我的问题是,如果我的目标是3.5并且仍然遇到此问题,我该如何更正?

重现问题的步骤:

  1. 在Visual Studio 2010中创建一个新的C#Windows窗体应用程序项目(确保以.NET Framework 4.0为目标)
  2. 将拆分容器添加到基本表单.
  3. 运行应用程序(将运行正常)
  4. 将目标更改为.NET Framework 3.5(属性 - >应用程序 - >目标框架:)
  5. 重新运行应用程序(它会因Cast异常而崩溃).

任何有关这方面的帮助将不胜感激!

.net exception splitcontainer winforms

24
推荐指数
2
解决办法
9520
查看次数

GSON将布尔值序列化为0或1

所有,

我正在尝试执行以下操作:

public class SomClass
{
    public boolean x;
    public int y;
    public String z;
}       

SomClass s = new SomClass();
s.x = true;
s.y = 10;
s.z = "ZZZ";
Gson gson = new Gson();
String retVal = gson.toJson(s);
return retVal;
Run Code Online (Sandbox Code Playgroud)

所以这个小片段会产生:

{"x":true,"y":10,"z":"ZZZ"}
Run Code Online (Sandbox Code Playgroud)

但我需要它生产的是:

{"x":0, "y":10,"z":"ZZZ"}
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些选择吗?我不希望将我的布尔值重写为整数,因为这将导致现有代码存在若干问题(非显而易见,难以阅读,难以执行等)

java serialization parsing json gson

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

试图在MySQL中读取流错误的过去结束

我遇到MySQL的问题,我有以下错误.

MySqlClient.MySqlException: Fatal error encountered during command execution. ---> 
MySql.Data.MySqlClient.MySqlException: Fatal error encountered attempting to read the resultset. ---> 
MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. ---> 
System.IO.EndOfStreamException: Attempted to read past the end of the stream.
Run Code Online (Sandbox Code Playgroud)

我在夜间运行时会发生此错误.并且它很少发生,所以很难找到为什么会发生这种情况.我使用.NET 3.5与MySQLConnector 6.2.4.0.

我正在使用以下代码运行它.

        public DataSet Read(String query, List<KeyValuePair<String, object>> parameters)
    {
        MySqlDataAdapter adapter = null;
        DataSet returnVal = null;
        if (query != null && query.Length > 0)
        {
            try
            {
                returnVal = new DataSet();
                if (connection.State != ConnectionState.Open)
                {
                    connection.Open();
                }
                query …
Run Code Online (Sandbox Code Playgroud)

.net mysql connector ioexception

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

如何使用默认构造函数伪造InitialContext

所有,

我试图在一些古老的java代码中进行一些单元测试(没有接口,没有抽象等)

这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它在web.xml/context.xml文件中设置了数据库信息.现在,我已经弄清楚如何制作一个假的ServletContext,但代码有

 InitialContext _ic = new InitialContext();
Run Code Online (Sandbox Code Playgroud)

到处都是(所以更换它是不可行的).我需要找到一种方法来使默认的InitialContext()能够在_ic.lookup(val)不抛出异常的情况下完成.

我假设有一些方法可以加载context.xml,但是这个魔法是如何工作的,我正在画一个空白.有人有主意吗?

java unit-testing initial-context

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

Parallels.ForEach与Foreach相同的时间

所有,

我使用Parallels.ForEach如下

private void fillEventDifferencesParallels(IProducerConsumerCollection<IEvent> events, Dictionary<string, IEvent> originalEvents)
    {
        Parallel.ForEach<IEvent>(events, evt =>
        {
            IEvent originalEventInfo = originalEvents[evt.EventID];
            evt.FillDifferences(originalEventInfo);
        });
    }
Run Code Online (Sandbox Code Playgroud)

好的,所以我遇到的问题是我有28个这样的列表(一个测试样本,这应该可以扩展到200+)和FillDifferences方法非常耗时(每次调用大约4s).因此,在普通ForEach中运行的平均时间大约为100-130秒.当我在Parallel中运行相同的东西时,它需要相同的时间和Spikes我的CPU(Intel I5,2 Core,每个Core 2个线程)导致应用程序在此查询运行时变得迟缓(这是在一个线程上运行这是由GUI线程产生的).

所以我的问题是,我做错了什么导致这花费相同的时间?我读到List不是线程安全的所以我重写了这个以使用IProducerConsumerCollection.是否有任何其他陷阱可能导致这种情况?

FillDifferences方法调用一个静态类,该类使用反射来找出原始对象和修改对象之间存在多少差异.静态对象没有"全局"变量,只有被调用方法的局部变量.

有些人想看看FillDifferences()方法调用了什么.这是最终结束的地方:

  public  List<IDifferences> ShallowCompare(object orig, object changed, string currentName)
    {
        List<IDifferences> differences = new List<IDifferences>();
        foreach (MemberInfo m in orig.GetType().GetMembers())
        {
            List<IDifferences> temp = null;

            //Go through all MemberInfos until you find one that is a Property.
            if (m.MemberType == MemberTypes.Property)
            {
                PropertyInfo p = (PropertyInfo)m;
                string newCurrentName = "";
                if (currentName != …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing task-parallel-library

10
推荐指数
1
解决办法
2138
查看次数

删除邮件时,Visio 2010 UML对象生命线会重命名

我正在为我们的系统与其他系统交互的方式做很多文档,并使用Visio 2010附带的UML Sequence Diagram(Metrics US)形状.当我使用它们时,我遇到以下问题:

我创建一个对象生命线并将其命名为'X'然后我添加另一个对象生命线并将其命名为'y'.我从'X'添加消息到'Y'.到目前为止,这一切都很好.但是如果我删除将"X"连接到"Y"的消息,则对象生命线将自己重命名为Object1和Object2.你可以想象当你有大约10个不同的对象生命线时这是多么令人讨厌,而傻瓜决定因为删除了一条消息而重命名你的所有生命线!

我无法弄清楚它为什么会出现在visio的开发者工具部分中(虽然我绝不是一个Visio dev)

Visio 2010 Premium v​​.14.0.5128.5000

有人有任何见解吗?

uml visio

7
推荐指数
3
解决办法
2258
查看次数

MySQL中的事务 - 无法回滚

我正在使用MySQL 5.0.27,并试图让交易工作.我按照本教程:

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html

仍然无法让这些工作.我试图更新的表是InnoDB,并试图执行'set autocommit = 0'但它似乎没有做任何事情....我写的代码如下:

public int transactionUpdate()
{
    MySqlConnection connection = new MySqlConnection(connStr);
    connection.Open();
    MySqlCommand command = connection.CreateCommand();
    MySqlTransaction trans;
    trans = connection.BeginTransaction();
    command.Connection = connection;
    command.Transaction = trans;
    try
    {
        command.CommandText = "SET autocommit = 0";
        command.executeNonQuery();
        command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = 'en-us' WHERE rl.recording=123456";
        command.executeNonQuery();
        command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = en-us WHERE rl.recording=123456";      
        command.executeNonQuery();
        trans.Commit();
    }
    catch(Exception ex)
    {
        try
        {
            trans.Rollback();
        }
        catch(MySqlException mse)
        {
            log.error(mse);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# mysql transactions rollback

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

JAXB序列化接口到XML问题(Map <String,ISomeInterface>不工作)

我正在尝试使用JAXB 2.2.4将接口序列化为XML,但是当我在Map <>对象中有一个接口时,它会爆炸并给我错误:

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的2个计数com.test.IInterface2是一个接口,JAXB无法处理接口.此问题与以下位置有关:at com.test.IInterface2 at public java.util.Map com.test.Interface1Impl.getI2()at com.test.Interface1Impl com.test.IInterface2没有no-arg默认值构造函数.此问题与以下位置有关:在com.test.Interface1Impl上的公共java.util.Map com.test.Interface1Impl.getI2()中的com.test.IInterface2处

如果我删除了Map <>,这个代码已经过测试并且有效,如果我使用List <>,它甚至可以使用它,但是有一些关于JAXB不喜欢的Map <>.

这是我正在运行的代码,如果您知道解决此问题的方法,请告诉我!

 package com.test;
    import java.io.StringWriter;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.annotation.XmlSeeAlso;

    @XmlSeeAlso({Interface2Impl.class})
    public class main
    {

        /**
         * @param args
         */

        public static void main(String[] args) {

            IInterface1 i1 = new Interface1Impl();
            i1.setA("SET A VALUE");
            i1.setB("Set B VALUE");
            IInterface2 i2 = new Interface2Impl();
            i2.setC("X");
            i2.setD("Y");
            i1.getI2().put("SOMVAL",i2);

            String retval = null;
            try {
                StringWriter writer = new StringWriter();
                JAXBContext context = JAXBContext.newInstance(Interface1Impl.class, Interface2Impl.class); …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

4
推荐指数
1
解决办法
8660
查看次数

如果在C#中的表单上发生异常,如何正常关闭表单

我的位置我有一个大型用户应用程序,有很多表单,我正在寻找一种方法来关闭单个表单,如果由于该表单上捕获的某些逻辑而发生异常.

现在我正在遵循"不要在任何地方写try/catch以捕捉愚蠢的错误"的原则,它确实使我的代码更清晰,但是当我有NullPointerException时会导致整个应用程序崩溃.

最好的解决方案是一个"本地错误处理程序",每个表单都会收集该级别的任何异常,并在那里终止表单而不是冒泡并终止整个应用程序.

有人有主意吗?

c# forms exception-handling

2
推荐指数
1
解决办法
632
查看次数