小编Pat*_*ard的帖子

如何在C#中将System.Array转换为object []

我有一个COM函数,期望object[]作为参数:

foo(object[] values)
Run Code Online (Sandbox Code Playgroud)

我想传递一些enum字段,所以我使用以下内容:

object[] fields = (object[])Enum.GetValues(typeof(SomeEnumType));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试传递fieldsfoo(...)ie [ foo(fields)]时,我收到一个错误:

"无法将类型为'SomeEnumType []'的对象强制转换为'system.Object []'.

谁能告诉我我做错了什么?

.net c# enums casting c#-4.0

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

提升等效于std :: async()

如果不使用boost::threadboost::bind直接,有没有实现下面的代码等效的方法吗?

std::string func()
{
    std::string str("Hello from async task!");
    return str;
}

int main()
{
    auto ftr = std::async(&func);
    std::cout << "Hello from main!";
    std::string str = ftr.get();
    std::cout << str << std::endl;      
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

具体而言,这一部分:auto ftr = std::async(&func);

c++ boost asynchronous c++11

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

Excel互操作中的工作表和表单之间的区别

在excel COM interop(C#)中,有什么区别:

_sheet = (Excel._Worksheet)_wb.Worksheets["SheetName"];
Run Code Online (Sandbox Code Playgroud)

_sheet = (Excel._Worksheet)_wb.Sheets["SheetName"];
Run Code Online (Sandbox Code Playgroud)

excel interop c#-4.0

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

IMessageFilter无法处理0x800AC472(VBA_E_IGNORE)使IMessageFilter的实现无关紧要吗?

msdn看来它似乎IMessageFilter没有处理所有异常,例如,在某些点,办公室应用程序'暂停'它们的对象模型,此时它不能被调用并抛出:0x800AC472 (VBA_E_IGNORE)

为了解决这个问题,你必须把你的呼叫放在一个循环中并等待它成功:

while(true)
{
    try
    {
        office_app.DoSomething();
        break;
    }
    catch(COMException ce)
    {
        LOG(ce.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果每次调用office应用程序的对象模型都需要这个样板代码,那么实现中是否有任何意义IMessageFilter

excel office-interop excel-interop c#-4.0

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

使用C++进行Excel RTD服务器开发

我想用C++编写一个excel RTD服务器,但除了这个http://weblogs.asp.net/kennykerr/archive/2008/12/02/Rtd5之外,还没有找到任何运气查找和完成如何操作的教程.aspx.

但是,由于我对这些东西不熟悉,我认为我需要更完整的东西.你们中的任何人都可以指向C++示例的方向吗?

谢谢

编辑:对于那些感兴趣的人,我发现了这个:http://www.codeproject.com/Articles/245265/Guide-to-Writing-Custom-Functions-in-Excel-Part-II.aspx

c++ excel finance rtd

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

如何在Windows上将文件内容传递给python脚本

我想将文件的内容以及其他一些参数传递给Windows上的python脚本。

在linux上,我可以这样做:

less input.txt | my_script.py  > output.txt
Run Code Online (Sandbox Code Playgroud)

在Windows上,我尝试了以下操作,但似乎不起作用:

more input.txt | python my_script.py  > output.txt
Run Code Online (Sandbox Code Playgroud)

知道我在做什么错吗?

python command-line dos

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

是否有可能在VS 2010中"调试"C#应用程序的发布版本

我有一个excel插件,当我从VS2010构建/运行时,它在调试和发布模式下工作正常.但是,当我使用Windows安装程序部署它时,它无法正常运行.

我不确定问题是什么,或者即使"调试"发布代码也会有所帮助.

关于我如何找到问题的任何提示?

编辑

我的意思是"操作不正常"是当我按下按钮等没有任何事情发生它只是挂起.

谢谢

c# debugging excel add-in visual-studio-2010

5
推荐指数
3
解决办法
9768
查看次数

如何让C#计时器在创建它的同一个线程上执行?

我想IMessageFilter在Excel Addin 上启用我必须写入excel.我从这里举了一些例子说:

消息过滤器是每个线程,所以我们将此线程注册为消息过滤器(不是创建加载项的主线程 - 因为这是Excel的主线程

我的问题是,当一个计时器过去导致从ThreadPool线程调用写入方法时,我的系统写入excel ,因为它IMessageFilter不能访问RetryRejectedCall部分IMessageFilter,因为它存在于调用者线程而不是执行的生成者之间.计时器.

所以,我的问题是:有没有办法可以强制计时器的Elapsed事件在初始化计时器的同一个线程上运行?

编辑:

我的问题是,如何IMessageFilter在抛出拒绝/忙碌时捕获excel错误?

谢谢

.net c# multithreading timer

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

C++ - Boost.Promise,Boost.Unique_Future和Move Semantics

我继巴尔托什卢斯基一些教程,这里我觉得这是非常有用的.但是,由于作者使用了C++ 11线程标准的just :: thread实现(我还没有),我现在决定使用boost线程,因为该教程的作者说它很简单.这样做.这似乎是本系列前三个教程的情况,但我遇到了第四个问题.这是我的代码:

#include <iostream>
#include <cassert>
#include <boost\thread.hpp>
#include <boost\thread\future.hpp>

void thFun(boost::promise<std::string> & prms)
{
    std::string str("Hi from future!");
    prms.set_value(str);
}

int main()
{
    boost::promise<std::string> prms;
    boost::unique_future<std::string> fut = prms.get_future();

    boost::thread th(&thFun, std::move(prms)); // error C2248: 'boost::promise<R>::promise' : cannot access private member declared in class 'boost::promise<R>' 

    std::cout << "Hi from main!";
    std::string str = fut.get();
    std::cout << str << std::endl;
    th.join();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下行似乎引发了一个我不明白的问题:

boost::thread th(&thFun, std::move(prms));
Run Code Online (Sandbox Code Playgroud)

编译器抱怨的地方:

错误C2248:'boost :: promise :: promise':无法访问类'boost …

c++ multithreading boost move-semantics

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

System.Windows.Forms.Timer没有触发

我想使用a System.Windows.Forms.Timer来确保在我正在创建的excel插件的UI线程上触发事件.我按如下方式构建计时器:

private System.Windows.Forms.Timer _timer;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Debug.WriteLine("ThisAddIn_Startup:" + Thread.CurrentThread.ManagedThreadId);

    _timer = new System.Windows.Forms.Timer();
    _timer.Tick += new EventHandler(TimerEventHandler);
    _timer.Interval = 500;            
}
Run Code Online (Sandbox Code Playgroud)

计时器是由我正在使用的库中的COM事件触发的:

private void OnEvent()
{
    _timer.Start();
}
Run Code Online (Sandbox Code Playgroud)

然后我希望_timer在它滴答时调用以下方法:

public void TimerEventHandler(object sender, EventArgs args)
{
    _timer.Stop();
    Debug.WriteLine("Tick: " + Thread.CurrentThread.ManagedThreadId);                  
}
Run Code Online (Sandbox Code Playgroud)

据我所知,当我在Addin线程中创建计时器时,即使它是从另一个线程启动的(在这种情况下是COM事件),它应该触发它创建的线程,即插件线程.但是,这不会发生.

我已经在RTDServer我过去写过的这个确切的机制中实现了(正如Kenny Kerr所概述的那样)并且它按预期工作,但_timer在这种情况下从未打过.

我还阅读了其他SO文章指出相同的行为,无法弄清楚我的插件设置有什么不同?

编辑: 触发OnEvent()方法.

c# com multithreading timer excel-addins

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