标签: invalidoperationexception

Python cdecimal InvalidOperation

我正在尝试阅读财务数据并存储它.我从商店获得财务数据的地方数据具有令人难以置信的精度,但我只对小数点后的5位数感兴趣.因此,我决定在我创建的Decimal上使用t = .quantize(cdecimal.Decimal('.00001'),rounding = cdecimal.ROUND_UP),但我不断得到InvalidOperation异常.为什么是这样?

>>> import cdecimal
>>> c = cdecimal.getcontext()
>>> c.prec = 5
>>> s = '45.2091000080109'
>>> # s = '0.257585003972054' works!
>>> t = cdecimal.Decimal(s).quantize(cdecimal.Decimal('.00001'), rounding=cdecimal.ROUND_UP)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  cdecimal.InvalidOperation: [<class 'cdecimal.InvalidOperation'>]
Run Code Online (Sandbox Code Playgroud)

为什么这里有无效操作?如果我将精度更改为7(或更高),它可以工作.如果我将s设置为'0.257585003972054'而不是原始值,那也可以!到底是怎么回事?

谢谢!

python decimal invalidoperationexception

9
推荐指数
1
解决办法
7315
查看次数

在c#中使用foreach循环时修改集合

基本上,我想在foreach循环中删除列表中的项目.我知道在使用for循环时这是可能的,但出于其他目的,我想知道使用foreach循环是否可以实现这一点.

在python中,我们可以通过执行以下操作来实现此目的:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for i in a:
    print i

    if i == 1:
        a.pop(1)
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出

>>>1
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

但是当在c#中做类似的事情时,我得到一个InvalidOperationException,我想知道是否有办法解决这个问题,而不仅仅是使用for循环.

我抛出异常时使用的c#代码:

static void Main(string[] args)
  {
  List<string> MyList = new List<string>(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9"});

  foreach (string Item in MyList)
    {
    if (MyList.IndexOf(Item) == 0)
      {
      MyList.RemoveAt(1);
      }

    Console.WriteLine(Item);
    }
  }
Run Code Online (Sandbox Code Playgroud)

提前致谢

c# python invalidoperationexception

8
推荐指数
2
解决办法
3245
查看次数

套接字/线程问题:撤消操作遇到的上下文与相应的Set操作中应用的上下文不同

我遇到了上述问题很多的问题.我们有一个TCP/IP服务器应用程序,已经运行了好几年.我现在需要允许应用程序接受来自直接连接的USB设备的连接,通过内部使用套接字连接来修补服务器应用程序中的localhost(127.0.0.1).(顺便说一句,我只提到USB来解释我为什么这样做 - 我禁用所有USB功能作为调试此问题的一部分).

沿此套接字的通信可导致在客户端和服务器端调用GUI元素.访问客户端上的GUI元素会导致标题中的错误(下面的调用堆栈).这里的一个关键问题是调试器无法暂停异常:尽管在抛出时将所有异常设置为暂停,但应用程序只是在发生错误时终止.

我的应用程序唯一看起来独一无二的是它使用内部套接字连接到127.0.0.1.我还确认,如果将客户端分成单独的应用程序,该应用程序可以正常工作.但是,出于其他原因,我无法将其用作永久解决方案.

有几篇帖子讨论了我在下面列出的这类问题.不幸的是,在我的案例中似乎没有提供解决方案:

  • 大多数相关帖子讨论了通过使用Invoke或BeginInvoke确保在GUI线程上执行所有GUI操作的需要.我相信我的应用程序正确执行此操作(它使用Application.Forms获取表单以获取主窗体并在此调用Invoke)并在调试器中进行了双重检查.
  • 关于上面的内容,有一些关于使用Invoke vs BeginInvoke来阻止/不阻止的讨论.在我的情况下,两者都有相同的结果.
  • 一些帖子建议有必要在GUI线程上自己创建套接字(我的).
  • 这个解释说,如果在应用程序中使用DoEvents,则可以得到错误(我没有).
  • 也意味着当使用异步调用进行客户端套接字连接时(我的客户端连接是同步的),您可能会在缺少EndConnect调用时收到错误.
  • 这个解释说,如果尚未创建窗口句柄,则可以从InvokeRequired获取不正确的结果(已使用IsHandleCreated进行了检查).
  • 微软连接上的这个报告了一个类似的声音错误,但没有解决方案(微软自2006年以来一直在'调查'它!)
  • 这个包含一个建议,使用AsyncOperationManager.SynchronizationContext来备份/恢复同步上下文,这(不出所料?)只会导致不同的错误.
  • 有几篇帖子暗示错误只是调试,以下内容会让它消失 - 但我没有费心去尝试:
    System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false

还有其他帖子提出类似的问题:这里,这里这里.这里也是一个好人.

这是一个代码片段 - 当客户端收到套接字数据时,这会导致ProcessCommandCT内的崩溃:

' Find application main form from any thread
' There is only one instance of 'RibbonForm1' and this is the main form
Public Function GetRibbonForm() As RibbonForm1
    Dim rf As RibbonForm1 = Nothing
    For Each f As Form In My.Application.OpenForms
        rf …
Run Code Online (Sandbox Code Playgroud)

.net sockets multithreading invalidoperationexception thread-safety

8
推荐指数
1
解决办法
4841
查看次数

自定义ChangeMonitor for .Net MemoryCache导致无效的操作异常

我为.Net MemoryCache编写了自己的自定义更改监视器类.它似乎初始化很好,但是当我尝试将它添加到Cache时,它会抛出一个InvalidOperation异常"该方法已经被调用,并且只能被调用一次."

我的更改监视器类

internal class MyChangeMonitor : ChangeMonitor
{
    private Timer _timer;
    private readonly string _uniqueId;
    private readonly TypeAsOf _typeAsOf;
    private readonly string _tableName;

    public GprsChangeMonitor(TypeAsOf typeAsOf, string tableName)
    {
        bool initComplete = false;
        try
        {
            _typeAsOf = typeAsOf;
            _tableName = tableName;

            _uniqueId = Guid.NewGuid().ToString();
            TimeSpan ts = new TimeSpan(0, 0, 5, 0, 0);
            _timer = new Timer {Interval = ts.TotalMilliseconds};
            _timer.Elapsed += CheckForChanges;
            _timer.Enabled = true;
            _timer.Start();
            initComplete = true;
        }
        finally 
        {
            base.InitializationComplete();
            if(!initComplete)
                Dispose(true);
        }
    }

    void …
Run Code Online (Sandbox Code Playgroud)

.net c# invalidoperationexception

8
推荐指数
1
解决办法
7940
查看次数

由于在调用Application.Exit()时修改集合而导致的System.InvalidOperationException

我有这个非常,非常奇怪的错误,我从来没有能够确定(它很少发生).基本上,我有一个C#应用程序在退出时随机抛出一个未知的异常.我这次设法在调试器中捕获它,结果是调用Application.Exit()抛出了System.InvalidOperationException以下消息:

mscorlib.dll中发生了'System.InvalidOperationException'类型的第一次机会异常

附加信息:收集已修改; 枚举操作可能无法执行.

我不确定这个据称被修改的集合是什么,或者修改它的是谁.

堆栈跟踪不是很有用:

mscorlib.dll!System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()+ 0x13f bytes System.Windows.Forms.dll!System.Windows.Forms.Application.ExitInternal()+ 0x112 bytes System.Windows.Forms.dll!System. Windows.Forms.Application.Exit(System.ComponentModel.CancelEventArgs e)+ 0x65字节

知道如何找出哪些ArrayList已被修改?我不认为这是我正在做的任何事情,更可能是我正在做的一个动作,即在MS没有预料到的操作过程中修改.NET框架的基础状态.

.net c# invalidoperationexception

8
推荐指数
1
解决办法
5814
查看次数

C#控制台应用程序无效的操作异常

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;

namespace BissUpdater
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=H....; 
                Initial Catalog=LANDesk; Persist Security Info=True; 
                User ID=Mainstc; Password=xxxxxxxx";

            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SQL Connection引发了无效的操作异常.

"无效操作.连接已关闭".

这是我的完整代码.在另一个程序中,它完美无缺.

这是第二次,这不起作用.我正在使用VS2005 ...也许我的程序已损坏?

堆栈跟踪:

在System.Data.SqlClient.SqlConnection.get_ServerVersion()
的System.Data.SqlClient.SqlConnection.GetOpenConnection()处

c# sql-server console invalidoperationexception

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

为什么这段代码会抛出InvalidOperationException?

我认为我的代码应该使ViewBag.test属性等于"No Match",但它会抛出一个InvalidOperationException.

为什么是这样?

string str = "Hello1,Hello,Hello2";
string another = "Hello5";
string retVal = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                   .First(p => p.Equals(another));
if (str == another)
{
   ViewBag.test = "Match";
}
else
{
   ViewBag.test = "No Match"; //this does not happen when it should
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc equality exception invalidoperationexception

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

带有Process的InvalidOperationException

我正在使用以下代码启动一个新进程:

Process p = new Process();
p.StartInfo.FileName = "...";
p.StartInfo.Arguments = "...";
p.Start();
p.WaitForExit(300000); // 5 minutes

if (!p.HasExited) 
    p.Kill();
Console.Write(p.ExitCode);
Run Code Online (Sandbox Code Playgroud)

当过程在5分钟内结束时,这是有效的,但是当它没有时,我得到了

InvalidOperationException(进程必须在确定请求的信息之前退出...).

知道为什么我得到这个例外吗?

谢谢.

c# process invalidoperationexception

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

拖动多个项目时,此视图不允许使用DataGrid"EditItem"

我有一个datagrid,它获取如下数据:

    public struct MyData
    {
        public string name { set; get; }
        public string artist { set; get; }
        public string location { set; get; }
    }

    DataGridTextColumn col1 = new DataGridTextColumn();
    col4.Binding = new Binding("name");
    dataGrid1.Columns.Add(col1);
    dataGrid1.Items.Add((new MyData() { name = "Song1", artist = "MyName", location =     "loc"}));
    dataGrid1.Items.Add((new MyData() { name = "Song2", artist = "MyName", location =     "loc2"}));
Run Code Online (Sandbox Code Playgroud)

问题是 - 每当用户尝试编辑单元格或拖动多个单元格时,应用程序都会抛出异常:

System.InvalidOperationException未处理
消息:此视图不允许使用'EditItem'.

为什么是这样?是因为输入数据的方式?
有任何想法吗?
谢谢!

wpf datagrid invalidoperationexception

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

PerformanceCounter.NextValue()抛出InvalidOperationException

这是创建性能计数器的代码:

var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total");
Run Code Online (Sandbox Code Playgroud)

这是异常发生的地方:

int cnt = (int)Math.Round(ftpPerfCounter.NextValue());
Run Code Online (Sandbox Code Playgroud)

这是Exception消息:

"错误消息:指定类别的计数器布局无效,类型的计数器:AverageCount64,AverageTimer32,CounterMultiTimer,CounterMultiTimerInverse,CounterMultiTimer100Ns,CounterMultiTimer100NsInverse,RawFraction或SampleFraction必须紧跟任何基本计数器类型:AverageBase ,CounterMultiBase,RawBase或SampleBase."

错误消息非常神秘.我不知道如何避免将来发生异常.

细节

这种情况发生在Windows Server 2008 R2 64位操作系统上.FTP服务器是IIS.

c# performancecounter invalidoperationexception iis-7.5 windows-server-2008-r2

7
推荐指数
1
解决办法
2880
查看次数