我有一个后期绑定的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文章中所述.我希望有一个更简单的方法!
我在Visual Studio 2017中使用新的CSPROJ格式创建了一个WPF应用程序.
通过
我可以成功构建并运行该应用程序.但是,我有一个问题,即代码编辑器无法识别XAML中的任何控件,因此我在编辑器中得到错误的错误而没有智能感知.
项目文件:
<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)
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
我正在使用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().
我的 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) 我想获取记录在 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) 我们使用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的文档限制,还是我的配置错误?如果是限制,请在答案中提供指向文档的链接.
我使用LINQ to XML来处理由Autodesk公司创建的PackageContents.xml文件.公司已在此处定义了此XML文件的结构,但没有XSD架构.
我有一个问题:这家公司违反了规则......通常情况下,元素和属性都是无效的.例如,可以定义"Url"属性而不是"URL"属性(不同的大小写).
与元素名称一样,属性名称区分大小写,并且必须以字母或下划线开头.
"网址"不等于"网址" - 找不到此类属性.
我可以通过LINQ to XML(或其他)解决这个问题,或者我不能解决?
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()?
嗨,我想将一些动态生成的内容上传到我的网络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 …
注意我也在Roslyn 的 GitHub 上问过这个问题(带有复制代码)
请注意,我已经尝试将 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) c# ×5
.net ×2
apache-kafka ×1
asp.net ×1
asp.net-core ×1
asynchronous ×1
casing ×1
chunked ×1
database ×1
iis-express ×1
late-binding ×1
linq-to-xml ×1
microsoft-extensions-logging ×1
msbuild ×1
roslyn ×1
smtp ×1
stream ×1
vb6 ×1
wpf ×1
xml ×1