小编RB.*_*RB.的帖子

如何使用后期绑定的COM对象中的事件?

我有一个后期绑定的COM对象(My.COMInterface),它在完成处理时引发一个事件.如何从VB6代码中使用该事件?

如果我是早期绑定,我会将我的COM对象声明为WithEvents,并编写一个普通的事件处理程序.如何使用后期绑定实现此目的?

当前代码:

Dim comObject as Object

'Function to launch Process.
Public Function LaunchProcess() As Boolean
    Set comObject = CreateObject("My.COMInterface")

    LaunchProcess= comObject.CallProcess()
    ' Once this process has finished, it will raise an event 
    ' called ProcessingFinished - how do I consume it?
End Function
Run Code Online (Sandbox Code Playgroud)

我目前知道的唯一方法是编写一个C/C++桥来处理事件,如本MSDN文章中所述.我希望有一个更简单的方法!

vb6 event-handling late-binding

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

使用新的CSPROJ格式时,WPF控件在代码隐藏中无法识别

我在Visual Studio 2017中使用新的CSPROJ格式创建了一个WPF应用程序.

通过

我可以成功构建并运行该应用程序.但是,我有一个问题,即代码编辑器无法识别XAML中的任何控件,因此我在编辑器中得到错误的错误而没有智能感知.

代码编辑器中的错误错误

重现步骤

  1. 发布VS 2017
  2. 创建一个新的"WPF应用程序(.NET Framework)"C#项目
  3. 编辑csproj文件,如下所示:

项目文件:

<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <LanguageTargets>$(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>
    <TargetFramework>net45</TargetFramework>
    <ProjectGuid>{030D04DA-D603-4D4C-95F7-B6F725A6829E}</ProjectGuid>
  </PropertyGroup>
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
  </PropertyGroup>
  <PropertyGroup>
    <StartupObject />
  </PropertyGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </ApplicationDefinition>
    <Page Include="MainWindow.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
    <Compile Update="**\*.xaml.cs" SubType="Designer" DependentUpon="%(Filename)" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="System.Xaml" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
  1. 在MainWindow.xaml中添加一个名为"button1"的按钮,如下所示:

MainWindow.xaml

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525"> …
Run Code Online (Sandbox Code Playgroud)

c# wpf visual-studio-2017 roslyn-project-system common-project-system

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

有没有办法关闭邮件smtp会话?

我正在使用Gmail STMP服务器发送电子邮件.它工作得很好.但是从几天开始,它有时会停止工作.现在,这只是工作5 out of 10时间.

例外: Failure Sending Email

内在例外: Unable to connect to remote server.

在谈到托管技术支持后,他们说他们的服务器上有一个邮件会话限制.这是一个Shared Hosting,所以当它超过所有新连接时都会阻塞.他们说他们正试图修复它.但也说请检查你是谁closing the mail session properly or not.

我调查了它,但没有Close()Dispose().我还看到没有确认SMTP转移?

如果有关闭邮件会话,请告诉我?或解决此问题的任何解决方法.

更新

我在用 System.Net.Mail

MailMessage msg = new MailMessage();

SmtpClient sc = new SmtpClient("smtp.gmail.com",587);

NetworkCredential info = new NetworkCredential("email","password");

然后还有另一种调用方法sc.Send().

.net c# smtp

7
推荐指数
1
解决办法
6848
查看次数

是否可以在 kafka 连接器中重置 kafka 消费者组主题的偏移量?

我的 kafka 接收器连接器从多个主题(配置了 10 个任务)读取数据,并处理来自所有主题的超过 300 条记录。根据每个记录中保存的信息,连接器可以执行某些操作。

以下是触发器记录中键:值对的示例:

"REPROCESS":"my-topic-1"

读取此记录后,我需要将主题“my-topic-1”在其每个分区中的偏移量重置为 0。

我在很多地方读到,创建一个新的KafkaConsumer、订阅主题的分区,然后调用该subscribe(...)方法是推荐的方式。例如,

public class MyTask extends SinkTask {

    @Override
    public void put(Collection<SinkRecord> records) {
        records.forEach(record -> {
        if (record.key().toString().equals("REPROCESS")) {
            reprocessTopicRecords(record);
        } else {
            // do something else
        }
        });
    }
    private void reprocessTopicRecords(SinkRecord record) {
        KafkaConsumer<JsonNode, JsonNode> reprocessorConsumer = 
            new KafkaConsumer<>(reprocessorProps, deserializer, deserializer);
        reprocessorConsumer.subscribe(Arrays.asList(record.value().toString()),
            new ConsumerRebalanceListener() {
                public void onPartitionsRevoked(Collection<TopicPartition> partitions) {}
                public void onPartitionsAssigned(Collection<TopicPartition> partitions) { 
                    // do offset reset here
                }
            }
        ); …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-consumer-api apache-kafka-connect

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

在 ASP.Net Core 中全局设置日志记录范围

我想获取记录在 ASP.Net Core 服务中的每条日志消息上的某些关键信息位(服务名称、服务版本、主机名等)。

我有以下代码:

public class Program
{
    public static void Main(string[] args)
    {
        var host = CreateHostBuilder(args).Build();

        using (host.Services.GetRequiredService<ILogger<Program>>().BeginScope("ServiceName: {0}", "bob-service"))
        {
            host.Run();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureLogging(builder =>
            {
                builder.AddConsole(o => o.IncludeScopes = true);
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
Run Code Online (Sandbox Code Playgroud)

从这里我得到以下日志:

info: Microsoft.Hosting.Lifetime[0]
      => ServiceName: bob-service
      Now listening on: http://localhost:5002

info: Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker[102]
      => ConnectionId:0HLSO8706NGBN => RequestPath:/ RequestId:0HLSO8706NGBN:00000001, SpanId:|aa5794ba-408ad22a63064421., TraceId:aa5794ba-408ad22a63064421, ParentId: => Middleware_Scope => /Index
      Executed handler method OnGet, returned result . …
Run Code Online (Sandbox Code Playgroud)

asp.net-core microsoft-extensions-logging

7
推荐指数
1
解决办法
1663
查看次数

IIS Express是否尊重applicationPool的processModel中的用户设置?

我们使用IIS Express启动网站,但它使用启动它的用户的凭据,而不是应用程序池流程模型中设置的凭据.

我的IIS Express applicationHost.config的相关部分如下:

<system.applicationHost>
    <applicationPools>
        <add name="MyAppPool">
            <processModel identityType="SpecificUser" userName="MYDOMAIN\ServiceAccount" password="MyPassword" />
        </add>
    </applicationPools>

    <sites>
        <site name="MyWebsite" id="2">
            <application path="/" applicationPool= "MyAppPool">
                <virtualDirectory path="/" physicalPath="c:\path\to\my\website" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:MyWebsite" />
            </bindings>
            <traceFailedRequestsLogging enabled="true" />
        </site>
    </sites>
</system.applicationHost>
Run Code Online (Sandbox Code Playgroud)

我使用以下命令行启动IIS Express:

iisexpress.exe /apppool:MyAppPool /config:c:\path\applicationHost.config
Run Code Online (Sandbox Code Playgroud)

这是IIS Express的文档限制,还是我的配置错误?如果是限制,请在答案中提供指向文档的链接.

iis-express

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

LINQ to XML:忽略属性的情况

我使用LINQ to XML来处理由Autodesk公司创建的PackageContents.xml文件.公司已在此处定义了此XML文件的结构,但没有XSD架构.

我有一个问题:这家公司违反了规则......通常情况下,元素和属性都是无效的.例如,可以定义"Url"属性而不是"URL"属性(不同的大小写).

案例对于XML(或英语)很重要:

与元素名称一样,属性名称区分大小写,并且必须以字母或下划线开头.

"网址"不等于"网址" - 找不到此类属性.

我可以通过LINQ to XML(或其他)解决这个问题,或者我不能解决?

.net c# xml linq-to-xml casing

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

cmd.ExecuteNonQuery()在我的程序中做了什么

string connection = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=D:\\it101\\LoginForm\\App_Data\\registration.mdb";

string query = "INSERT INTO [registration] ([UserID] , [Name] , [Contact_no] , [City]) values (123, 'abc' ,12345, 'pqr')";

OleDbConnection con = new OleDbConnection(connection);
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = query;
cmd.CommandType = CommandType.Text;
cmd.Connection = con;

con.Open();
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

如果我不在程序结束时编写cmd.ExecuteNonQuery()怎么办?如果需要执行查询,为什么要编写executeNonquery()而不是executeQuery()?

c# database asp.net

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

HttpWebRequest chunked/async POST

嗨,我想将一些动态生成的内容上传到我的网络API.在客户端我使用HttpWebRequest.数据应该上传同步,我想写入流AFTER(!)我执行了HTTP请求.

(从服务器到客户端它确实工作正常,但从客户端到服务器我得到一些例外).

客户端实现如下:

HttpWebRequest httpWebRequest = HttpWebRequest.Create(myUrl) as HttpWebRequest;
httpWebRequest.Method = "POST";
httpWebRequest.Headers["Authorization"] = "Basic " + ... ;
httpWebRequest.PreAuthenticate = true;

httpWebRequest.SendChunked = true;
//httpWebRequest.AllowWriteStreamBuffering = false; //does not help...
httpWebRequest.ContentType = "application/octet-stream";
Stream st = httpWebRequest.GetRequestStream();

Task<WebResponse> response = httpWebRequest.GetResponseAsync();

// NOW: Write after GetResponse()

var b = Encoding.UTF8.GetBytes("Test1");
st.Write(b, 0, b.Length);

b = Encoding.UTF8.GetBytes("Test2");
st.Write(b, 0, b.Length);

b = Encoding.UTF8.GetBytes("Test3");
st.Write(b, 0, b.Length);

st.Close();

var x = response.Result;
Stream resultStream = x.GetResponseStream();
//do some output...
Run Code Online (Sandbox Code Playgroud)

我在stream.write()上得到异常(NotSupportedException:流不支持并发IO读或写操作.).

为什么我这里有例外.有时第一次写入worke而后期写入会抛出异常.在开始时,stream.CanWrite属性为true,但在第一次或第二次或第四次写入后,它变为false …

c# asynchronous stream httpwebrequest chunked

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

MSBuildWorkspace 无法将带有 &lt;ProjectReference&gt; 的项目编译到另一个项目

注意我也在Roslyn 的 GitHub 上问过这个问题(带有复制代码)

  • 创建一个包含 2 个项目(CoreLibrary 和 DownstreamLibrary)的新解决方案。
  • 将项目引用从 DownstreamLibrary 添加到 CoreLibrary。
  • 运行以下代码并注意 DownstreamLibrary 不再编译。

请注意,我已经尝试将 net461、netcoreapp2.1 和 netstandard2.0 作为项目的目标框架 - 每次都遇到相同的问题。

static async Task Main(string[] args)
{
    MSBuildLocator.RegisterDefaults();
    using (var workspace = MSBuildWorkspace.Create())
    {
        workspace.WorkspaceFailed += (sender, workspaceFailedArgs) => WriteLine(workspaceFailedArgs.Diagnostic.Message);
        var solution = await workspace.OpenSolutionAsync(@"c:\source\ForRoslynTest\ForRoslynTest.sln");
        WriteLine($"Loaded solution {solution.FilePath}");

        var projectTree = workspace.CurrentSolution.GetProjectDependencyGraph();
        foreach (var projectId in projectTree.GetTopologicallySortedProjects())
        {
            await CompileProject(workspace.CurrentSolution.GetProject(projectId));
        }
    }
}

private static async Task CompileProject(Project project)
{
    WriteLine($"Compiling {project.Name}. It has {project.MetadataReferences.Count} metadata …
Run Code Online (Sandbox Code Playgroud)

msbuild roslyn roslyn-code-analysis

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