小编Dav*_*Caz的帖子

相当于VB在C#中的自定义RaiseEvent块?

(我知道标题听起来很容易,但坚持 - 这可能不是你认为的问题.)

在VB.NET中,我能够编写自定义事件.举个例子,我有一个单独的线程会定期引发事件,在那个事件上需要更新GUI.我不希望繁忙的线程打扰UI计算,我不想把Me.Invoke(Sub()...)放在事件处理程序中,因为它也是从GUI线程调用的.

我想出了这个非常有用的代码.GUI线程将设置EventSyncInvoke = Me(主窗体).然后线程可以像往常一样简单地引发事件TestEvent,没有特殊代码,它将在GUI线程上无缝执行:

Private TestEventDelegate As EventHandler
Public EventSyncInvoke As System.ComponentModel.ISynchronizeInvoke

Public Custom Event TestEvent As EventHandler
    AddHandler(value As EventHandler)
        TestEventDelegate = [Delegate].Combine(TestEventDelegate, value)
    End AddHandler

    RemoveHandler(value As EventHandler)
        TestEventDelegate = [Delegate].Remove(TestEventDelegate, value)
    End RemoveHandler

    RaiseEvent(sender As Object, e As System.EventArgs)
        If EventSyncInvoke IsNot Nothing Then
            EventSyncInvoke.Invoke(TestEventDelegate, {sender, e})
        Else
            TestEventDelegate.Invoke({sender, e})
        End If
    End RaiseEvent
End Event
Run Code Online (Sandbox Code Playgroud)

现在在C#中,我可以做到这一点:

public event EventHandler TestEvent
    add
    {
        testEventDelegate = (EventHandler)Delegate.Combine(testEventDelegate, value);
    }
    remove
    {
        testEventDelegate = (EventHandler)Delegate.Remove(testEventDelegate, value); …
Run Code Online (Sandbox Code Playgroud)

c# events

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

SQLite.net SQLiteFunction在Linq to SQL中不起作用

我使用System.Data.SQLite.SQLiteFunction在C#中创建了一些自定义SQLite函数.当使用SQLiteDataAdapter执行查询时,它工作得很好,但它不起作用,但是,当使用Linq to SQL时,我会收到错误,指出该函数不存在.

我想底线是,如何让Custom SQLiteFunctions在Linq to SQL中工作?要么让它们加载它们应该的方式,要么通过修改SQLite.Net的源代码使它们成为dll的一部分?

注意:我理解实体框架是首选,这是遗留应用程序,我没有选项来更改它.我尝试手动将函数绑定到DataContext.Connection,没有骰子.


关于尝试修改System.Data.SQLite的背景:我尝试下载源代码,我可以从源代码成功构建,但源代码对我来说有点令人费解.

  • 在System.Data.SQLite.2012项目中,项目中不包含任何文件,但所有源文件都存在于实际文件夹中.它们似乎包含在名为System.Data.SQLite.Files.targets的文件中的解决方案中.这对我来说是一个奇怪的设置.
  • 我将自定义函数添加到项目文件夹中,但没有将它们包含在项目中,就像所有其他文件一样.然后我将它们添加到System.Data.SQLite.Files.targets中.
  • 我构建了解决方案,它们确实出现在程序集中.虽然我似乎可以将文件添加到程序集和构建中,但修改现有代码似乎没有任何影响.
  • 我进入了SQLiteConnection类并在Open方法中添加了一个新的Exception,我在关键位置添加了Console.Writeline,我在现有代码中修改的任何东西似乎都没有进入已编译的程序集.

这样做的目的是尝试将我的自定义函数构建到System.Data.SQLite.dll中,而不是依赖于通过反射自动加载.

c# sqlite system.data.sqlite linq-to-sql

12
推荐指数
1
解决办法
5676
查看次数

如何在VB6程序中修复错误"无法加载控件SSPanel;找不到许可证"

我有一个VB6遗留程序,我需要更改.我无法从IDE运行该程序.当我激活IDE中的一个表单时,我收到一个错误,它引用了一个错误日志文件.日志文件中包含以下内容

"无法加载控制SSPanel;未找到许可证"

SSPanel是Sheridan 3D控件(THREED32.ocx)的一部分,并且选择了该组件.

我该如何修复错误?

vb6

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

什么导致错误HRESULT:0x80010105(RPC_E_SERVERFAULT)?

我创建了一个ASP.NET Web服务,它使用第三方支付处理引擎来授权信用卡交易.

Web服务托管在单独的应用程序服务器上,并通过ActiveX对象(.ocx扩展名)连接到支付处理服务器.最近,HRESULT: 0x80010105 (RPC_E_SERVERFAULT)当我尝试使用" IsAvaiable"检查建立与应用程序的连接时,它一直在生成异常.

有没有人建议开始研究这个问题的好地方?

(我知道联系供应商将是第一个选择,但我想在联系技术支持之前让我的"鸭子连续")

.net web-services com-interop

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

RegSvr和RegServer有什么区别?

/RegServer/RegSvr相同或不同,如果不同为什么/如何?

例如,我见过(32位操作系统的例子)这种风格:

RegSvr32 COM.exe
Run Code Online (Sandbox Code Playgroud)

要么

RegSvr32 COM.dll
Run Code Online (Sandbox Code Playgroud)

或者作为替代方案(在64位操作系统上):

COM.exe /RegServer
COM.exe /RegSvr
Run Code Online (Sandbox Code Playgroud)

这些不同的方法是否做同样的事情?

com registration

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

SQL Server和事务中间的连接丢失

可能重复:
连接关闭时未提交的事务会发生什么?

如果在交易过程中丢失连接会发生什么?

我想如果事务永远不会提交并且可以再次执行,但是...有没有办法我可以连接并将其回滚到保存的点并继续我已经拥有的东西?

亲切的问候.

t-sql sql-server transactions sql-server-2008

11
推荐指数
1
解决办法
6125
查看次数

Mercurial Convert扩展更改行结尾

我正在使用Mercurial Convert扩展来从PerForce存储库导入数据.转换似乎已正常工作,但所有Windows行结尾(CRLF)都被unix结尾(LF)取代.

有没有办法让这个扩展单独留下行结尾?

mercurial mercurial-extension mercurial-convert

11
推荐指数
1
解决办法
929
查看次数

C#中的数组属性语法

我有一个具有整数数组属性的类,我正在尝试为它找出正确的语法.int数组在类构造函数中实例化.

class DemoClass
{
    private int[] myNumbers;
    public int[] MyNumbers
    {
        get { /* Some logic */ }
        set { /* Some logic */ }
    }

    public DemoClass(int elements)
    {
        // Here, the array should get instantiated using the elements.
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我希望我的客户端代码通过属性从数组中检索数字,get/set块语法如何工作MyNumbers?我怎样才能发送正确的索引?我有什么要初始化的?

c# syntax

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

运行时错误-2146234341(8013101b)使用清单从VB.NET到VB6的自动化错误?

我试图在无reg的情况下从VB6客户端访问VB.NET DLL(.NET FX 4.0).

我尝试按照http://msdn.microsoft.com/en-us/library/ms973915.aspx中的示例进行操作,但没有成功.我下载了(文章中的链接)源代码并编译,没有成功(错误信息:运行时错误'-2146234341(8013101b)':自动化错误").从VB6 IDE运行使用注册的VB.NET DLL工作.

我尝试了其他示例,其中.NET DLL被创建为COM类(使用VS2010中的"COM类"模板),嵌入或未嵌入引用DLL的清单,但没有任何对我有用.

有人可以提供一些简单的源代码,在VB6客户端中使用VB.NET DLL(.NET FX v4)的清单示例吗?

非常感谢提前.

vb.net vb6 .net-4.0 regfreecom

11
推荐指数
1
解决办法
3956
查看次数

如何防止文件重定向从程序数据到VirtualStore\ProgramData

我正在使用C#和.net 2.0

我将程序数据保存在以下文件中: C:\Program Data\MyProgramName\fileName.xml

安装并运行我的应用程序一次后我卸载它(在卸载期间我从"程序数据"中删除所有文件)然后重新安装应用程序,然后运行它.

奇怪的是,我的应用程序就像程序数据中存在的文件一样启动 - 意思是,即使数据文件被删除,我的应用程序中也有旧数据.

运行时:

File.Exists("C:\ Program Data\MyProgramName\fileName.xml")

即使我确定该文件不存在,我仍然"真实".

当我以管理员身份运行应用程序然后文件不存在时,事情就变得陌生了.

经过研究,我发现在运行我的应用程序时没有管理员权限而不是获取:

"C:\ Program Data\MyProgramName\fileName.xml"我得到"C:\ Users\userName\AppData\Local\VirtualStore\ProgramData\MyProgramName\fileName.xml"

确实有一个文件存在于以前的安装中(我显然没有删除,因为我不知道它存在).所以请指导我如何在没有管理员权限的情况下运行应用程序时停止此操作.我不想在VirtualStore文件夹中自动创建任何文件.请讨论阻止这种情况的所有可能方法.谢谢

virtualstore windows-7 c#-2.0

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