小编use*_*458的帖子

在C#中实现阻塞队列

我使用下面的代码来实现和测试阻塞队列.我通过启动5个并发线程(删除程序)来测试队列,以便将项目从队列中拉出来,阻塞队列是否为空,以及1个并发线程(加法器)将项目间接添加到队列中.但是,如果我让它运行的时间足够长,我会得到一个异常,因为即使队列为空,其中一个卸载线程也会处于等待状态.

有谁知道为什么我得到例外?请注意,我很想知道为什么这不起作用而不是工作解决方案(就像我可以谷歌那样).

我非常感谢你的帮助.

using System;
using System.Threading;
using System.Collections.Generic;

namespace Code
{
    class Queue<T>
    {
        private List<T> q = new List<T>();

        public void Add(T item)
        {
            lock (q)
            {
                q.Add(item);
                if (q.Count == 1)
                {
                    Monitor.Pulse(q);
                }
            }
        }

        public T Remove()
        {
            lock (q)
            {
                if (q.Count == 0)
                {
                    Monitor.Wait(q);
                }
                T item = q[q.Count - 1];
                q.RemoveAt(q.Count - 1);
                return item;
            }
        }
    }

    class Program
    {
        static Random r = new Random();
        static Queue<int> q = …
Run Code Online (Sandbox Code Playgroud)

c# queue multithreading

13
推荐指数
1
解决办法
5122
查看次数

除非我在退出之前插入睡眠,否则System.Net.FtpClient openwrite不会上传文件

我正在使用System.Net.FtpClient程序集将文件上载到测试FTP站点.当我运行下面的代码时,文件不会出现在远程位置,除非我使用Thread.Sleep如下所示(我不想使用):

using System;
using System.IO;
using System.Net;
using System.Net.FtpClient;
using System.Security.Cryptography.X509Certificates;
using System.Threading;

namespace FtpsUploadTest
{
    /// <summary>
    /// The ftp publisher.
    /// </summary>
    public class FtpPublisher
    {
        private readonly FtpsSettings _settings;
        private readonly IFtpClient _ftpClient;

        /// <summary>
        /// Initializes a new instance of the <see cref="FtpPublisher"/> class.
        /// </summary>
        public FtpPublisher()
        {
            _ftpClient = new FtpClient();
            _settings = SettingsReader.GetMySettings();
            Init();
        }


        /// <summary>
        /// The publish.
        /// </summary>
        /// <param name="fileToUpload">
        /// The input file path.
        /// </param>
        public …
Run Code Online (Sandbox Code Playgroud)

c# ftps

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

WPF DataGrid - 在每行结尾添加按钮

我想在datagrid的每一行的末尾添加一个按钮.我找到了以下xaml,但它在开始时添加了按钮.有人知道如何在所有数据绑定列之后添加它吗?

这会将按钮添加到开头而不是结尾:

  <DataGrid Background ="Black" ItemsSource="{Binding PriceList}">
    <DataGrid.Columns>
      <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
            <Button>My button</Button>
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>
Run Code Online (Sandbox Code Playgroud)

提前谢谢了

c# wpf datagrid

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

标签 统计

c# ×3

datagrid ×1

ftps ×1

multithreading ×1

queue ×1

wpf ×1