小编Sim*_*ods的帖子

Stuck in a git rebase ... how to reset

I am part way through a git rebase and I am stuck. I can't remember exactly what happened but I was using a UI and deleted a checked-out branch and things just seemed to go blank. I restarted and managed to do a bit of other work creating and committing to other branches etc but then I noticed a status saying I was still in the middle of a rebase

If I try

git rebase --skip
git rebase --continue
git …
Run Code Online (Sandbox Code Playgroud)

git rebase

10
推荐指数
3
解决办法
1426
查看次数

了解字符串比较行为

我需要将一些字符串比较从vb转换为c#.vb代码使用>和<运算符.我希望用标准的框架字符串比较方法替换它.但是,有一种我不理解的行为.为了复制这个,我有这个测试

[TestMethod]
public void TestMethod2()
{
    string originalCulture = CultureInfo.CurrentCulture.Name; // en-GB

    var a = "d".CompareTo("t");  // returns -1
    var b = "T".CompareTo("t");  // returns 1

    Assert.IsTrue(a < 0, "Case 1");
    Assert.IsTrue(b <= 0, "Case 2");
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么b返回1.我目前的理解是,如果它区分大小写,那么"T"应该在排序顺序中的"t"之前,即-1.如果它不区分大小写,它将是相同的,即0

(仅供参考.Net Framework 4.5.2)

很多thx

c#

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

同步 VB6 显然是异步的!碰撞

我们有一个旧的 VB6 应用程序,它不时启动,挂起。我们认为这可能与转向 Citrix 有关,但现在可以在 Win10 上的胖客户端上复制该行为。我们认为我们之前在早期的 Windows 版本上没有看到过这种情况,但仍在检查日志以确认这一点。

我们在跳入文本框然后跳出时会遇到这种行为。当我们通过它时,我们正在做一个简单的 ado 调用来查找/验证文本框中的一些数据。作为正确运行程序的一部分,我们正在记录

“Opening Dataset: SELECT ... FROM ... ”
“Opened Dataset”
Run Code Online (Sandbox Code Playgroud)

在这 2 个日志语句之间是简单的 ado 数据检索代码,我们以前没有遇到过这些问题。它在一个 ActiveX dll 中并且同步运行。最重要的是,在这 2 个日志语句之间,没有DoEvents或 api 调用会产生控制权。就我们所见,它应该是一个纯粹的同步操作。

当系统崩溃时,偶尔发生,我们可以看到其他日志语句出现在这 2 个之间,它们可以是资源状态(例如,多少内存,gdi/用户对象 - 通常会因为计时器在主窗体中触发而找到) ) 或焦点类型事件——它们不是定时器驱动的——至少在我们的代码库中是这样。

“Opening Dataset: SELECT ... FROM ... ”
“Resource Status: ...”
“Opened Dataset”```
Run Code Online (Sandbox Code Playgroud)

或者

“Opening Dataset: SELECT ... FROM ... ”
“TextItem.OnLostFocus Item1 ...”
“TextItem.Validate ...”
“TextItem.OnGotFocus Item2 ...
“Opened Dataset”
Run Code Online (Sandbox Code Playgroud)

所以我最初的问题是,在什么情况下,应该是同步的操作会被中断并显示为异步操作。

例如,我们没有这样做,我可以想象编写一些不安全的代码,通过使用多媒体计时器(在另一个线程上)并向我们的一个模块上的函数的地址提供 AddressOf 参数,该计时器启动执行我们的代码,与正确的控制流分开。除了类似的东西,我只是看不出同步 vb6 代码是如何以这种方式中断的。

如果您有任何想法、建议或意见,我将不胜感激。如果这太模糊了,我真的很抱歉。这可能反映了我是如何努力解决这个问题的。

vb6 thread-safety

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

COMInterop - 系统找不到文件 - 仅限 IDE

我有一个旧的 VB6 程序,已经好几个月没有使用了。该程序引用了大量 C# 程序集 (.NetFramework 4.8)。将程序作为二进制文件运行,一切正常。

我已经打开 VB6 ide 来单步执行一些代码,但现在遇到自动化错误“系统找不到指定的文件”。(错误 80070002)尝试实例化 COM Interop 类之一时。这以前没有发生过。

Private Sub InitMessageStore()

    Dim l_oBusFactory As IfxBusService.BusFactory <= COM Interop reference

    Set l_oBusFactory = New IfxBusService.BusFactory <= ERROR here
    l_oBusFactory.InitialiseMessageStore GetConnection(m_oIfxsys.Dbase.Database.Definition)

End Sub
Run Code Online (Sandbox Code Playgroud)

COM Interop 决定

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(IBusFactory))]
[Guid("200C6C26-6881-4CB5-A8E7-E0E5532D6D5F")]
public class BusFactory : IBusFactory


[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("5531BD20-2C7B-452B-A7D7-2D05E39EB83E")]
public interface IBusFactory
Run Code Online (Sandbox Code Playgroud)

我已经重新检查了上述注册表注册...最重要的是

在此输入图像描述

并且该文件位于注册表中指定的文件夹位置。

我使用的是 Win10 版本 10.0.19044 Build 19044。我以管理员身份运行所有内容。我仅将 DEP 切换到基本的 Windows 程序和服务。

正如我上面所说,当作为二进制文件运行时,一切都工作正常,但是,对我来说,操作系统似乎正在阻止 VB6 ide 加载 COM Interop 程序集。

关于如何单步执行(但不一定进入)我的 COM 互操作代码再次工作的任何建议。

vb6 com com-interop

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

标签 统计

vb6 ×2

c# ×1

com ×1

com-interop ×1

git ×1

rebase ×1

thread-safety ×1