我创建了一个使用a SortedDictionary来存储和操作数据的类.除非在多线程环境中实现,否则该类很有效.现在,我想通过为内部SortedDictionary类编写包装类来使类线程安全.我想使用Reader-Writer Locks来实现它,但是现在,我在编写包装器本身时遇到了问题.具体来说,我不知道如何实现Enumerator字典.这是我现在所用的完整代码.
public class ConcurrentSortedDictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
{
#region Variables
SortedDictionary<TKey, TValue> _dict;
#endregion
#region Constructors
public ConcurrentSortedDictionary()
{
_dict = new SortedDictionary<TKey, TValue>();
}
public ConcurrentSortedDictionary(IComparer<TKey> comparer)
{
_dict = new SortedDictionary<TKey, TValue>(comparer);
}
public ConcurrentSortedDictionary(IDictionary<TKey, TValue> dictionary)
{
_dict = new SortedDictionary<TKey, TValue>(dictionary);
}
public ConcurrentSortedDictionary(IDictionary<TKey, TValue> dictionary, IComparer<TKey> comparer)
{
_dict = new SortedDictionary<TKey, TValue>(dictionary, comparer);
}
#endregion
#region Properties
public IComparer<TKey> Comparer
{
get
{
return _dict.Comparer;
} …Run Code Online (Sandbox Code Playgroud) 我在这里引用以下线程来回答我的问题:
我基本上想做与 OP 相同的事情,但与响应此线程的其他一些用户不同,在添加代码示例中未明确定义的缺少的 PInvoke 声明后,我无法使代码正常工作。我组装了一个类文件,试图将所有内容放在一起,并引用了 PInvoke.net 的声明(我不确定这是否是用户 michalczerwinski 所做的,或者他是否正在使用某种 PInvoke 库)。这是我到目前为止所拥有的:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
namespace Example
{
public static class TrayTooltip
{
[Flags]
public enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VirtualMemoryOperation = 0x00000008,
VirtualMemoryRead = 0x00000010,
VirtualMemoryWrite = 0x00000020,
DuplicateHandle = 0x00000040,
CreateProcess = 0x000000080,
SetQuota = 0x00000100,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
QueryLimitedInformation …Run Code Online (Sandbox Code Playgroud) 我正在为iOS 9.1制作应用程序(使用Xcode 7.1和Swift 2.0),其中包含UITextView用于显示来自rtf资源文件的格式化文本.我viewDidLoad()在视图控制器的函数中调用以下函数来加载文本:
func loadTutorialText() {
if let rtfPath = NSBundle.mainBundle().URLForResource("TutorialText", withExtension: "rtf") {
do {
let attributedStringWithRtf = try NSAttributedString(URL: rtfPath, options: [NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType], documentAttributes: nil)
self.textView.attributedText = attributedStringWithRtf
} catch {
print("Error loading text")
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,rtf资源文件中的文本已加载,但所有内容都显示为纯文本.这是rtf我正在使用的测试文件的示例:
示例标题
文本文本正文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本正文本文本文本文本文本文本文本文本文本文本文本.
示例标题
文本文本正文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本正文本文本文本文本文本文本文本文本文本文本文本.
项目符号列表
- 第1项
- 第2项
- 第3项
我需要设置一些属性UITextView来正确显示吗?
我正在尝试为String类创建一个简单的扩展方法,这将允许我提供要附加到包含换行符的现有字符串变量的文本:
string myStr = "Line 1";
myStr.AppendLine("Line 2");
Run Code Online (Sandbox Code Playgroud)
此代码应生成一个打印如下的字符串
Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)
这是我为它写的代码:
public static class StringExtensions
{
public static void appendLine(this String str, string text)
{
str = str + text + Environment.NewLine;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我调用代码时,新文本永远不会附加到原始实例变量.怎么实现呢?
我正在尝试制作一个简单的程序,该程序生成的音调可能会因输入值而异。我想起诉Console.Beep()函数,因为它似乎是最简单的解决方案,但却遇到了问题。我注意到当我连续调用Console.beep()函数时,如下所示:
System.Console.Beep(440, 500);
System.Console.Beep(460, 500);
System.Console.Beep(480, 500);
Run Code Online (Sandbox Code Playgroud)
当前音调停止和下一个音调开始之间存在很小的延迟(大约100-200毫秒左右)。我想知道是否有任何方法可以减少此延迟,以便每当频率更新时音调都不会立即暂停?
我正在设计一个状态机类,并希望使用lambda表达式来表示满足状态转换对象的条件.当我创建一个新的状态转换对象时,我还想传递一个条件列表,它可以用来评估是否转移到下一个状态.但是,我在初始化条件列表时遇到了问题.这是一个示例,简化的代码示例,说明了我遇到的问题:
// Alias for delegate function
using Condition = Func<int, bool>;
class SomeStateClass
{
public void SomeFuncToCreateConditionList()
{
List<Condition> conditions = new List<Condition>({
{ new Condition(x => x > 5) },
{ new Condition(x => x > 5 * x) }
});
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个语法错误就行了柯利括号List<Condition>({说法) expected,并在右括号的另一种语法错误说
new Condition(
; expected
} expected
Run Code Online (Sandbox Code Playgroud)
我确信这里有一些愚蠢的东西,但我一直盯着它看似太久了,似乎无法发现它.任何想法?