小编iBe*_*ner的帖子

为什么FileSystemWatcher会触发两次

为什么FileSystemWatcher会触发两次?有没有一种简单的方法来解决它?当然,如果我更新或编辑文本文件,它应该只触发一次?

这个链接在这里http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx

  1. 引发两次的事件 - 如果明确指定了事件处理程序(AddHander FSW.Created,AddressOf FSW_Created),则会引发两次事件.这是因为,默认情况下,公共事件会自动调用相应的受保护方法(OnChanged,OnCreated,OnDeleted,OnRenamed).要解决此问题,只需删除显式事件处理程序(AddHandler ...).

"删除显式事件处理程序"是什么意思?

Imports System.IO

Public Class Form2

    Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed

        'this fires twice
        MessageBox.Show("test")

    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        FileSystemWatcher1.Path = "C:\Users\c\Desktop\test\"
        FileSystemWatcher1.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName Or NotifyFilters.CreationTime

        FileSystemWatcher1.IncludeSubdirectories = False
        FileSystemWatcher1.Filter = "text.txt"

    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

vb.net filesystemwatcher visual-studio-2010

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

从SQL Server数据库中读取数据时出错

我有一个启用文件流的数据库

我能够写入数据库,但当我尝试读回数据时,我得到了这个错误

System.Data.dll中发生未处理的"System.ComponentModel.Win32Exception"类型的异常附加信息:用户名或密码不正确

我试图执行的代码就是这个

public void ReadFromDatabase()
{
    using (SqlConnection connection = new SqlConnection(sql_ConnectionString))
    {
        connection.Open();
        SqlCommand cmd = new SqlCommand("SELECT TOP(1) Video.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM Library", connection);

        SqlTransaction sqlTrans = connection.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Transaction = sqlTrans;

        using (SqlDataReader reader = cmd.ExecuteReader()) 
        {
            while (reader.Read())
            {
                string path = reader.GetString(0);
                byte[] transContext = reader.GetSqlBytes(1).Buffer;

                using (Stream fileStream = new SqlFileStream(path, transContext, FileAccess.Read, FileOptions.SequentialScan, allocationSize: 0))
                {
                    byte[] data = new byte[fileStream.Length];
                    fileStream.Read(data, 0, (int)fileStream.Length);

                    File.WriteAllBytes(@"C:\Users\Georgi\AppData\Local\VideoPresenter\temp.mp4", data);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用集成安全性,因此用户和密码保持不变并硬编码到应用程序中.

这是连接字符串代码 …

c# sql-server filestream

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

具有继承的 Blazor 模板组件

我有一个基本组件PetTemplate和第二个PetDog继承并使用PetTemplate. PetTemplate有一个名为 的方法ToggleDisplayIndex我的目标是当我单击页面上调用该方法的按钮PetDog.ToggleDisplay并在页面上显示/隐藏 PetDog 详细信息时。

下面示例代码中的“内部”按钮有效,但“外部”按钮无效。如何ToggleDisplay正确从页面或父组件调用该方法?

索引剃刀

@page "/"

<button @onclick="ShowPetDetails">Show Details (Outside)</button>

<PetDog @ref="dog" />

@code {
    PetDog dog;

    void ShowPetDetails()
    {
        dog.ToggleDisplay();
    }
}
Run Code Online (Sandbox Code Playgroud)

宠物狗剃刀

@inherits PetTemplate

<PetTemplate Name="Dog">
    <div>Someone's best friend!</div>
</PetTemplate>
Run Code Online (Sandbox Code Playgroud)

PetTemplate.razor

<div class="mt-3">
    <button @onclick="ToggleDisplay">Show Details (Inside)</button>
    <h3>Pet Name: @Name</h3>
    <div style="display:@display">
        @ChildContent
    </div>
</div>

@code {
    string display = "none";

    [Parameter]
    public string Name { get; set; }

    [Parameter] …
Run Code Online (Sandbox Code Playgroud)

c# blazor blazor-component

0
推荐指数
1
解决办法
4938
查看次数