尝试获取对工作表的引用(使用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)) .
我的演员是不正确的?
我有一个非常大而复杂的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秒.这无论是冷启动还是温暖都是如此.
所以,问题:
我想在我的应用程序中加入一个MP3并按需播放.不幸的是,我不知道如何开始.我一直在阅读.caf文件,但我不确定它们是什么.
如果可能的话,我正在寻找一步一步.
在我的MSTest UnitTest项目中,在运行任何测试之前,我需要执行一些命令.是否有一个功能,有点像Global.asax用于基于Web的项目,这将让我在任何测试运行之前启动一些东西?
我应该说清楚,当我说"执行一些命令"时,我不是指DOS命令,而是执行一些代码.
我有以下代码:
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) 我有一个位置(纬度和经度).如何获得部分或完全位于我所在位置10英里范围内的邮政编码列表?
解决方案可以是调用众所周知的Web服务(谷歌地图,bing地图等)或本地数据库解决方案(客户端具有sql server 2005)或算法.
我已经看到了类似的问题,但那里的所有答案几乎都与使用我无法使用的SQL Server 2008地理功能有关.
似乎Fiddler不会监视任何与Fiddler本身不同的用户.我想监视运行在的Windows服务Local System.
这可能吗?
我sgen用一公吨的类型对抗我的组装.我想从序列化中排除2种类型.我似乎无法找到办法.
我看到它sgen有一个/type开关来指定一个特定的类型,但没有什么可以排除特定的类型.
有没有办法从序列化中排除特定类型?
在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建议的副本无法解决问题的原因是它具有非标识列的表.我的表只有一个标识列.
我有以下代码:
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个线程(基于观察).我的问题:
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)