小编Ang*_*ker的帖子

为什么不能从Excel互操作中设置转换对象?

尝试获取对工作表的引用(使用Excel interop):

Excel.Application xl = new Excel.ApplicationClass();
Excel.Workbooks xlWorkBooks = xl.Workbooks;
Excel.Workbook xlWorkBook = xlWorkBooks.Open(fileName, 0, false, 5, "", 
                      "", true, Excel.XlPlatform.xlWindows, "\t",
                      false, false, 0, true, 1, 0);

// Next line crashes
Excel.Worksheets xlWorkSheets = (Excel.Worksheets) xlWorkBook.Worksheets; 
Run Code Online (Sandbox Code Playgroud)

错误是它无法投射它:

无法将"System .__ ComObject"类型的COM对象转换为接口类型"Microsoft.Office.Interop.Excel.Worksheets".此操作失败的原因是对IID"{000208B1-0000-0000-C000-000000000046}"的界面处的COM组件调用QueryInterface失败,因为以下错误:不支持此接口(从HRESULT异常:0x80004002(E_NOINTERFACE)) .

我的演员是不正确的?

c# excel interop .net-2.0

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

为什么我的.NET启动时间会因预先生成的序列化程序集而增加?

我有一个非常大而复杂的winforms应用程序.为了减少启动时间,我使用以下批处理文件预生成了序列化程序集.

; delete any existing serialization assemblies
del *XmlSerializers.dll

; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a

; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*
Run Code Online (Sandbox Code Playgroud)

然而,令我惊讶的是,启动时间实际上从4.6秒上升到6.1秒 - 跳跃1.5秒.这无论是冷启动还是温暖都是如此.

所以,问题:

  1. 为什么我的应用程序在序列化程序集到位时开始变慢?
  2. 当应用程序生成序列化程序集时,有没有办法通过Perfmon或其他工具查看?
  3. 我正确生成序列化程序集吗?

c# performance serialization .net-4.0 winforms

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

如何以编程方式在iPhone上播放MP3?

我想在我的应用程序中加入一个MP3并按需播放.不幸的是,我不知道如何开始.我一直在阅读.caf文件,但我不确定它们是什么.

如果可能的话,我正在寻找一步一步.

iphone audio xcode

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

单元测试的Global.asax?

在我的MSTest UnitTest项目中,在运行任何测试之前,我需要执行一些命令.是否有一个功能,有点像Global.asax用于基于Web的项目,这将让我在任何测试运行之前启动一些东西?

我应该说清楚,当我说"执行一些命令"时,我不是指DOS命令,而是执行一些代码.

c# unit-testing mstest startup visual-studio-2008

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

为什么我会收到序列化错误?

我有以下代码:

class Program
{
    static void Main(string[] args)
    {
        string xml = @"<ArrayOfUserSetting>
                            <UserSetting>
                                <Value>Proposals</Value>
                                <Name>LastGroup</Name>
                            </UserSetting>
                            <UserSetting>
                                <Value>Visible</Value>
                                <Name>WidgetsVisibility</Name>
                            </UserSetting>
                        </ArrayOfUserSetting>";

        List<UserSetting> settings = 
                 GetObjFromXmlDocument<List<UserSetting>>(xml);
    }

    public static T GetObjFromXmlDocument<T>(string xml)
    {
        T customType;

        XmlSerializer serializer = new XmlSerializer(typeof(T));

        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(xml);
        using (XmlNodeReader xmlNodeReader = new XmlNodeReader(xmlDocument))
        {
            customType = (T)serializer.Deserialize(xmlNodeReader);
        }

        return customType;
    }
}

[Serializable]
public class UserSetting
{
    public string Value { get; set; }
    public string Name { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# serialization exception .net-3.5 c#-3.0

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

给定坐标,如何获取半径10英里范围内的所有邮政编码?

我有一个位置(纬度和经度).如何获得部分或完全位于我所在位置10英里范围内的邮政编码列表?

解决方案可以是调用众所周知的Web服务(谷歌地图,bing地图等)或本地数据库解决方案(客户端具有sql server 2005)或算法.

我已经看到了类似的问题,但那里的所有答案几乎都与使用我无法使用的SQL Server 2008地理功能有关.

c# zipcode geolocation latitude-longitude .net-3.5

9
推荐指数
3
解决办法
7873
查看次数

如何使用Fiddler监控Windows服务?

似乎Fiddler不会监视任何与Fiddler本身不同的用户.我想监视运行在的Windows服务Local System.

这可能吗?

windows-services fiddler

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

如何从序列化中排除特定类型?

sgen用一公吨的类型对抗我的组装.我想从序列化中排除2种类型.我似乎无法找到办法.

我看到它sgen有一个/type开关来指定一个特定的类型,但没有什么可以排除特定的类型.

有没有办法从序列化中排除特定类型?

.net serialization sgen .net-4.0

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

如何在批处理中插入数据?

在MySQL中,我可以触发这些语句,一次插入5行:

CREATE TABLE t (id int primary key auto_increment)
INSERT INTO t VALUES (DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在MS SQL Server中做同样的事情?

PS建议的副本无法解决问题的原因是它具有非标识列的表.我的表只有一个标识列.

sql sql-server insert

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

什么决定了TaskFactory衍生作业的线程数?

我有以下代码:

var factory = new TaskFactory();
for (int i = 0; i < 100; i++)
{
    var i1 = i;
    factory.StartNew(() => foo(i1));
}

static void foo(int i)
{
    Thread.Sleep(1000);
    Console.WriteLine($"foo{i} - on thread {Thread.CurrentThread.ManagedThreadId}");
}            
Run Code Online (Sandbox Code Playgroud)

我可以看到它一次只做4个线程(基于观察).我的问题:

  1. 什么决定了一次使用的线程数?
  2. 我该如何找回这个号码?
  3. 我该如何更改此号码?

PS我的盒子有4个核心.

PPS我需要具有特定数量的任务(并且不再需要)由TPL同时处理并最终得到以下代码:

private static int count = 0;   // keep track of how many concurrent tasks are running

private static void SemaphoreImplementation()
{
    var s = new Semaphore(20, 20);  // allow 20 tasks at a time

    for (int i = …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading task-parallel-library

9
推荐指数
2
解决办法
7021
查看次数