相关疑难解决方法(0)

List.Add()线程安全

我知道一般来说List不是线程安全的,但是如果线程从不在列表上执行任何其他操作(例如遍历它),那么简单地将项添加到列表中是否有什么问题?

例:

List<object> list = new List<object>();
Parallel.ForEach(transactions, tran =>
{
    list.Add(new object());
});
Run Code Online (Sandbox Code Playgroud)

c# asp.net

79
推荐指数
6
解决办法
4万
查看次数

RxJS.Observable debounce有什么作用?

任何人都可以用简单的英语解释RxJS Observavle去抖功能的作用吗?

我想它会偶尔发出一个事件,具体取决于参数,但我的代码不能像我预期的那样工作.

var x$ = Rx.Observable.fromEvent(window, 'click')
.map(function(e) {return {x:e.x, y:e.y};})
.debounce(1000)
.subscribe(function(el) {
  console.log(el);
});
Run Code Online (Sandbox Code Playgroud)

JsBin版本.

我希望这个代码每秒打印一次,无论我点击多快.相反,它打印我认为是随机间隔的点击.

javascript rxjs debouncing

18
推荐指数
3
解决办法
1万
查看次数

在目录刷新期间遇到错误,不使用新的dll

我正在尝试使用mef创建一个POC,我需要在一个准备好运行的项目中动态加载dll,为此我创建了一个控制台应用程序项目和一个类库

项目.

控制台应用程序项目的代码如下 -

namespace MefProjectExtension
{
    class Program
    {
        DirectoryCatalog catalog = new DirectoryCatalog(@"D:\MefDll", "*.dll");

        [Import("Method1", AllowDefault = true, AllowRecomposition = true)]
        public Func<string> method1;

        static void Main(string[] args)
        {
            AppDomainSetup asp = new AppDomainSetup();
            asp.ShadowCopyFiles = "true";

            AppDomain sp = AppDomain.CreateDomain("sp",null,asp);

            string exeassembly = Assembly.GetEntryAssembly().ToString();
            BaseClass p = (BaseClass)sp.CreateInstanceAndUnwrap(exeassembly, "MefProjectExtension.BaseClass");
            p.run();
        }
    }


    public class BaseClass : MarshalByRefObject
    {
        [Import("Method1",AllowDefault=true,AllowRecomposition=true)]
        public Func<string> method1;

        DirectoryCatalog catalog = new DirectoryCatalog(@"D:\MefDll", "*.dll");

        public void run()
        {
            FileSystemWatcher sw = new FileSystemWatcher(@"D:\MefDll", …
Run Code Online (Sandbox Code Playgroud)

.net c# mef

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

为什么这个C#代码产生两次输出

嗨,我是C#的新手,正在测试一个简单的openFileDialog程序.我目前编写的代码似乎正在完成它的工作,但输出产生了两次.任何帮助,将不胜感激.

我的代码:

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);

        watcher.EnableRaisingEvents = true;
    }

    private void OnChanged(object source, FileSystemEventArgs e)
    {

        MessageBox.Show("copying done");

        StreamReader inStream = new StreamReader(destFile);
        string line;
        string[] lineSplit;
        bool errorFound = false;

        while ((line = inStream.ReadLine()) != null)
        {   
            lineSplit = line.Split(' ');
            for (int i = 0; i < lineSplit.Length; i++)
            {
                if (lineSplit[i] == textBox2.Text)
                {
                    errorFound = true;
                    MessageBox.Show("Error found in " + e.Name);
                    MessageBox.Show("Exiting");
                    break;
                }

            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2010

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

为 FileSystemWatcher 添加更改事件的正确方法是什么?

添加更改事件的正确方法是什么?

    public static void WatchFileForChange()
        {
            FileSystemWatcher fsw = new FileSystemWatcher();

            fsw.Path = Path.Join(System.Configuration.ConfigurationManager.AppSettings["AccessDBFolder"]);
            fsw.Changed += new FileSystemEventHandler(UpdateMDBChange);
            fsw.Filter = "*.mdb";
            fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
            fsw.EnableRaisingEvents = true;
            fsw.IncludeSubdirectories = true;
        }

        private static void UpdateMDBChange(object sender, FileSystemEventArgs e)
        {
            ///sf/answers/213007441/
            DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
            if (lastWriteTime.Ticks - lastRead.Ticks > 100000)
            {
                TestClient().Wait();
                lastRead = lastWriteTime;
            }
        }
Run Code Online (Sandbox Code Playgroud)

fsw.Changed += new FileSystemEventHandler(UpdateMDBChange);还是fsw.Changed += UpdateMDBChange;

两种方式似乎都很好。但我不知道是否会出现技术问题。或者如果某种方式不受欢迎。

c# service filesystemwatcher

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