{"id":18,"date":"2008-11-13T22:28:00","date_gmt":"2008-11-13T19:28:00","guid":{"rendered":"http:\/\/artifexbloghe.wordpress.com\/2008\/11\/13\/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%91-multithreading-%d7%91%d7%90%d7%a4%d7%9c%d7%99%d7%a7%d7%a6%d7%99%d7%95%d7%aa-gui-%d7%97%d7%9c%d7%a7-1"},"modified":"2008-11-13T22:28:00","modified_gmt":"2008-11-13T19:28:00","slug":"%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%91-multithreading-%d7%91%d7%90%d7%a4%d7%9c%d7%99%d7%a7%d7%a6%d7%99%d7%95%d7%aa-gui-%d7%97%d7%9c%d7%a7-1","status":"publish","type":"post","link":"https:\/\/www.artifex.co.il\/he\/?p=18","title":{"rendered":"\u05e2\u05d1\u05d5\u05d3\u05d4 \u05d1-Multithreading \u05d1\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d5\u05ea GUI &#8211; \u05d7\u05dc\u05e7 1"},"content":{"rendered":"<div dir=\"rtl\"><span style=\"font-family:arial;\">\u05d1\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd GUI \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05e8\u05d5\u05d1\u05d4 \u05e0\u05d9\u05de\u05d9\u05dd (Threads) \u05d9\u05e9\u05e0\u05dd \u05e0\u05d5\u05e9\u05d0\u05d9\u05dd \u05e9\u05d1\u05d3\u05e8\u05da \u05db\u05dc\u05dc \u05d4\u05dd \u05d8\u05e8\u05d9\u05d5\u05d5\u05d9\u05d0\u05dc\u05d9\u05dd \u05d0\u05da \u05de\u05e2\u05e6\u05dd \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05d1\u05d0\u05d5\u05e4\u05df \u05db\u05d6\u05d4\u00a0\u05e0\u05d3\u05e8\u05e9\u05ea\u00a0\u05d8\u05db\u05e0\u05d9\u05e7\u05d4\u00a0\u05de\u05d9\u05d5\u05d7\u05d3\u05ea\u00a0\u05dc\u05d4\u05ea\u05de\u05d5\u05d3\u05d3\u05d5\u05ea \u05e2\u05dd \u05d1\u05e2\u05d9\u05d5\u05ea \u05d9\u05d9\u05d7\u05d5\u05d3\u05d9\u05d5\u05ea \u05dc\u05de\u05e6\u05d1 \u05d6\u05d4. \u05d1\u05e4\u05d5\u05e1\u05d8 \u05d6\u05d4 \u05d0\u05e4\u05e8\u05d8 \u05d7\u05dc\u05e7 \u05de\u05d4\u05e0\u05d5\u05e9\u05d0\u05d9\u05dd \u05d4\u05d1\u05e2\u05d9\u05d9\u05ea\u05d9\u05d9\u05dd \u05d5\u05d0\u05ea \u05d0\u05d5\u05e4\u05e0\u05d9 \u05d4\u05e4\u05ea\u05e8\u05d5\u05df \u05d4\u05de\u05d5\u05de\u05dc\u05e6\u05d9\u05dd. <\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:arial;\"><br \/>\n<strong>\u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05d2\u05e8\u05e4\u05d9 \u05de-Thread \u05d0\u05d7\u05e8 \u05de\u05d6\u05d4 \u05e9\u05d9\u05e6\u05e8 \u05d0\u05d5\u05ea\u05d5:<\/strong> \u05de\u05e4\u05ea\u05d7\u05d9\u05dd \u05e8\u05d1\u05d9\u05dd \u05e0\u05ea\u05e7\u05dc\u05d9\u05dd \u05d1\u05d1\u05e2\u05d9\u05d4 \u05d1\u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8\u05d9 GUI \u05de\u05ea\u05d5\u05da Threads \u05de\u05e9\u05d5\u05dd \u05e9\u05d4-Thread \u05e9\u05d9\u05e6\u05e8 \u05d0\u05ea \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05d4\u05d2\u05e8\u05e4\u05d9 (\u05dc\u05de\u05e9\u05dc Progress Bar) \u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d4-Thread \u05e9\u05de\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05d5\u05d0\u05e9\u05e8 \u05de\u05e1\u05d5\u05d2\u05dc \u05dc\u05e1\u05e4\u05e7 \u05d0\u05ea \u05d4\u05e0\u05ea\u05d5\u05df \u05dc\u05d2\u05d1\u05d9 \u05d4\u05ea\u05e7\u05d3\u05de\u05d5\u05ea \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 (\u05d4\u05d5\u05d3\u05e2\u05ea &quot;Cross thread operation not valid&quot;). \u05d4\u05e4\u05ea\u05e8\u05d5\u05df \u05d4\u05d5\u05d0 \u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05d8\u05db\u05e0\u05d9\u05e7\u05ea Invoke \u05d1\u05d0\u05d5\u05e4\u05df \u05d4\u05d1\u05d0:<\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:Arial;\"> <\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:arial;\">\u05e8\u05d0\u05e9\u05d9\u05ea, \u05de\u05d2\u05d3\u05d9\u05e8\u05d9\u05dd delegate \u05e9\u05d9\u05e9\u05de\u05e9 \u05d0\u05d7&quot;\u05db \u05dc\u05d4\u05e2\u05d1\u05e8\u05ea \u05d4\u05db\u05ea\u05d5\u05d1\u05ea \u05e9\u05dc \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05e9\u05d9\u05e9 \u05dc\u05d4\u05e8\u05d9\u05e5 \u05e2&quot;\u05d9 Invoke \u05dc\u05e6\u05d5\u05e8\u05da \u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05d4\u05d2\u05e8\u05e4\u05d9. \u05e0\u05d5\u05db\u05dc \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05db\u05dc delegate \u05e9\u05e0\u05e8\u05e6\u05d4.<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:courier new;font-size:85%;color:#009900;\">\/\/This delegate will be used to call the method that will <\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/actually change the text in the textbox.<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:courier new;font-size:85%;\"><span style=\"color:#000099;\">delegate void<\/span> SafelySetTextBox_Handler(<span style=\"color:#000099;\">string<\/span> Text); <\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:arial;\">\u05db\u05e2\u05ea, \u05d9\u05e9 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05de\u05ea\u05d5\u05d3\u05d4 \u05e9\u05d4\u05d9\u05d0 \u05d6\u05d5 \u05e9\u05ea\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 (\u05dc\u05de\u05e9\u05dc, \u05d7\u05d9\u05e4\u05d5\u05e9 \u05d0\u05d7\u05e8 \u05e7\u05d5\u05d1\u05e5) \u05d5\u05d4\u05d9\u05d0 \u05ea\u05d4\u05d5\u05d5\u05d4 \u05d0\u05ea \u05d4-Thread \u05d4\u05e0\u05e4\u05e8\u05d3 \u05e9\u05dc\u05de\u05e2\u05e9\u05d4 \u05e0\u05d3\u05e8\u05e9 \u05dc\u05e2\u05d3\u05db\u05df \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05d2\u05e8\u05e4\u05d9 \u05e9\u05dc\u05d0 \u05d4\u05d5\u05d0 \u05d9\u05e6\u05e8.<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/This method makes the thread that will do the work and<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/will have to update the textbox in order to notify the<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/user about the progress.<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:courier new;font-size:85%;\"><\/p>\n<pre><span style=\"color:#000099;\">public void<\/span> DoAction()\n{\n  for (int i=0; i&lt;10; i++)\n  {\n    SafelySetTextBox(i);\n  }\n}<\/pre>\n<p><span style=\"font-size:100%;\"> <\/span><\/p>\n<p><\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;\"> <\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:arial;font-size:100%;\"><br \/>\n\u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05d4\u05d1\u05d0\u05d4 \u05d4\u05d9\u05d0 \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05e9\u05de\u05d6\u05e0\u05d9\u05e7\u05d4 \u05d0\u05ea \u05d4-Thread \u05e9\u05d9\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 (\u05dc\u05de\u05e9\u05dc \u05d7\u05d9\u05e4\u05d5\u05e9 \u05d0\u05d7\u05e8 \u05e7\u05d5\u05d1\u05e5). \u05db\u05de\u05d5\u05d1\u05df \u05e9\u05d6\u05d5 \u05d9\u05db\u05d5\u05dc\u05d4 \u05dc\u05d4\u05d9\u05d5\u05ea \u05db\u05dc \u05de\u05ea\u05d5\u05d3\u05d4 \u05d1\u05de\u05e2\u05e8\u05db\u05ea, \u05de\u05ea\u05d5\u05d3\u05ea OnClick \u05e9\u05dc \u05db\u05e4\u05ea\u05d5\u05e8, OnLoad \u05e9\u05dc \u05d8\u05d5\u05e4\u05e1 \u05d0\u05d5 \u05db\u05dc \u05d3\u05d1\u05e8 \u05d0\u05d7\u05e8 (\u05dc\u05de\u05e9\u05dc Elapsed \u05e9\u05dc \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 Timer) \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4 \u05d1\u05d7\u05e8\u05ea\u05d9 \u05dc\u05d4\u05d6\u05e0\u05d9\u05e7 \u05d0\u05ea \u05d4-Thread \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05de\u05ea\u05d5\u05da \u05d4-OnLoad \u05e9\u05dc \u05d4\u05d8\u05d5\u05e4\u05e1, \u05db\u05da:<br \/>\n<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/This method will launch the thread that will do the main process (i.e search for files, etc.)<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;\"><\/p>\n<pre><span style=\"color:#000099;\">public void<\/span> Form1_FormLoad(object sender, eventargs e)\n{\n   Thread t1 = new Thread(new ThreadStart(DoAction));\n   t1.Start();\n}<\/pre>\n<p><\/span><\/div>\n<div dir=\"rtl\"><span style=\"font-family:arial;font-size:100%;\">\u05de\u05ea\u05d5\u05d3\u05d4 \u05d6\u05d5 \u05d4\u05d9\u05d0 \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05e9\u05de\u05e2\u05d3\u05db\u05e0\u05ea \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d4\u05de\u05d1\u05d5\u05e7\u05e9 \u05dc\u05ea\u05d9\u05d1\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8. \u05de\u05e9\u05d5\u05dd \u05e9\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05e1\u05e4\u05e7 \u05dc\u05de\u05ea\u05d5\u05d3\u05d4 Invoke \u05d0\u05ea \u05d4\u05e4\u05e7\u05d5\u05d3\u05d4 \u05dc\u05d4\u05e6\u05d1\u05ea \u05d4\u05e2\u05e8\u05da \u05dc\u05ea\u05d9\u05d1\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8, \u05d9\u05e9 \u05dc\u05d9\u05e6\u05d5\u05e8 \u05de\u05ea\u05d5\u05d3\u05d4 \u05d4\u05de\u05d1\u05e6\u05e2\u05ea \u05d6\u05d0\u05ea \u05d5\u05d0\u05ea \u05db\u05ea\u05d5\u05d1\u05ea\u05d4 \u05dc\u05d4\u05e2\u05d1\u05d9\u05e8 \u05dc\u05de\u05ea\u05d5\u05d3\u05ea \u05d4-Invoke \u05d1\u05de\u05d9\u05d3\u05ea \u05d4\u05e6\u05d5\u05e8\u05da<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;\"> <\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/This method will format the text and set it to the textbox directly.<\/span><\/div>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;\"><\/p>\n<pre><span style=\"color:#000099;\">private void<\/span> SetTextBox(string Text)\n{\n   MyTextBox.Text = Text;\n}<\/pre>\n<p><\/span><\/div>\n<p dir=\"rtl\" align=\"right\"><span style=\"font-family:arial;font-size:100%;\">\u05de\u05ea\u05d5\u05d3\u05d4 \u05d6\u05d5 \u05d4\u05d9\u05d0 \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05e9\u05d9\u05e9 \u05dc\u05e7\u05e8\u05d5\u05d0 \u05dc\u05d4 \u05db\u05d0\u05e9\u05e8 \u05de\u05e2\u05d5\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1- TextBox. \u05d4\u05d9\u05d0 \u05de\u05e9\u05ea\u05de\u05e9\u05ea \u05d1\u05de\u05d0\u05e4\u05d9\u05d9\u05df InvokeRequired \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05d5\u05e2 \u05db\u05d9\u05e6\u05d3 \u05d9\u05e9 \u05dc\u05e4\u05e0\u05d5\u05ea \u05dc\u05de\u05ea\u05d5\u05d3\u05d4 SetTextBox \u05dc\u05e6\u05d5\u05e8\u05da \u05d1\u05d9\u05e6\u05d5\u05e2 \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e4\u05d5\u05e2\u05dc. \u05dc\u05de\u05e2\u05e9\u05d4 \u05dc\u05d0 \u05d4\u05d9\u05d9\u05e0\u05d5 \u05d7\u05d9\u05d9\u05d1\u05d9\u05dd \u05d0\u05ea \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05d4\u05d6\u05d5, \u05d4\u05d9\u05d4 \u05e0\u05d9\u05ea\u05df \u05dc\u05e9\u05d9\u05dd \u05d0\u05ea \u05d4\u05ea\u05e0\u05d0\u05d9 \u05d4\u05d6\u05d4 \u05d1\u05db\u05dc \u05de\u05e7\u05d5\u05dd \u05d1\u05e7\u05d5\u05d3 \u05d1\u05d5 \u05e8\u05e6\u05d9\u05e0\u05d5 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1-TextBox, \u05de\u05d8\u05e2\u05de\u05d9 \u05e0\u05d5\u05d7\u05d5\u05ea \u05d5\u05db\u05ea\u05d9\u05d1\u05d4 \u05e0\u05db\u05d5\u05e0\u05d4 \u05e9\u05dc \u05e7\u05d5\u05d3 \u05d4\u05d2\u05d3\u05e8\u05ea\u05d9 \u05d0\u05ea \u05d4\u05de\u05ea\u05d5\u05d3\u05d4 \u05d4\u05d6\u05d5. \u05de\u05ea\u05d5\u05d3\u05ea Invoke \u05de\u05e7\u05d1\u05dc\u05ea 2 \u05d0\u05e8\u05d2\u05d5\u05de\u05e0\u05d8\u05d9\u05dd: \u05d4\u05e8\u05d0\u05e9\u05d5\u05df \u05d4\u05d5\u05d0 \u05d4-delegate \u05d0\u05e9\u05e8 \u05de\u05d2\u05d3\u05d9\u05e8 \u05dc\u05de\u05e2\u05e9\u05d4 \u05d0\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d4 \u05e9\u05d9\u05e9 \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc, \u05d4\u05e9\u05e0\u05d9 \u05d4\u05d5\u05d0 \u05de\u05e2\u05e8\u05da \u05de\u05d8\u05d9\u05e4\u05d5\u05e1 object \u05e9\u05de\u05db\u05d9\u05dc \u05d0\u05ea \u05d4\u05d0\u05e8\u05d2\u05d5\u05de\u05e0\u05d8\u05d9\u05dd \u05e9\u05d9\u05e9 \u05dc\u05e9\u05dc\u05d5\u05d7 \u05dc\u05de\u05ea\u05d5\u05d3\u05d4 \u05d4\u05de\u05d5\u05d6\u05e0\u05e7\u05ea \u05d1\u05e1\u05d3\u05e8 \u05e9\u05d9\u05e9 \u05dc\u05e9\u05dc\u05d5\u05d7 \u05d0\u05d5\u05ea\u05dd.<\/span><\/p>\n<p dir=\"ltr\" align=\"left\"><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/This method decides how to set the text to the textbox.<\/span><br \/>\n<span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/This method is called from the thread that didn't create the<br \/>\n<\/span><span style=\"font-family:Courier New;font-size:85%;color:#009900;\">\/\/textbox.<\/span><\/p>\n<div dir=\"ltr\"><span style=\"font-family:Courier New;font-size:85%;\"><\/p>\n<pre><span style=\"color:#000099;\">private void<\/span> SafelySetTextBox(string Text)\n{\n   if (MyTextBox.InvokeRequired)\n   {\n      MyTextBox.Invoke(\n               new SafelySetTextBox_Handler(SetTextBox),\n               new object[]{Text});\n   }\n   else\n   {\n      SetTextBox(Text);\n   }\n}<\/pre>\n<p><\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u05d1\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd GUI \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05e8\u05d5\u05d1\u05d4 \u05e0\u05d9\u05de\u05d9\u05dd (Threads) \u05d9\u05e9\u05e0\u05dd \u05e0\u05d5\u05e9\u05d0\u05d9\u05dd \u05e9\u05d1\u05d3\u05e8\u05da \u05db\u05dc\u05dc \u05d4\u05dd \u05d8\u05e8\u05d9\u05d5\u05d5\u05d9\u05d0\u05dc\u05d9\u05dd \u05d0\u05da \u05de\u05e2\u05e6\u05dd \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05d1\u05d0\u05d5\u05e4\u05df \u05db\u05d6\u05d4\u00a0\u05e0\u05d3\u05e8\u05e9\u05ea\u00a0\u05d8\u05db\u05e0\u05d9\u05e7\u05d4\u00a0\u05de\u05d9\u05d5\u05d7\u05d3\u05ea\u00a0\u05dc\u05d4\u05ea\u05de\u05d5\u05d3\u05d3\u05d5\u05ea \u05e2\u05dd \u05d1\u05e2\u05d9\u05d5\u05ea \u05d9\u05d9\u05d7\u05d5\u05d3\u05d9\u05d5\u05ea \u05dc\u05de\u05e6\u05d1 \u05d6\u05d4. \u05d1\u05e4\u05d5\u05e1\u05d8 \u05d6\u05d4 \u05d0\u05e4\u05e8\u05d8 \u05d7\u05dc\u05e7 \u05de\u05d4\u05e0\u05d5\u05e9\u05d0\u05d9\u05dd \u05d4\u05d1\u05e2\u05d9\u05d9\u05ea\u05d9\u05d9\u05dd \u05d5\u05d0\u05ea \u05d0\u05d5\u05e4\u05e0\u05d9 \u05d4\u05e4\u05ea\u05e8\u05d5\u05df \u05d4\u05de\u05d5\u05de\u05dc\u05e6\u05d9\u05dd. \u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05d2\u05e8\u05e4\u05d9 \u05de-Thread \u05d0\u05d7\u05e8 \u05de\u05d6\u05d4 \u05e9\u05d9\u05e6\u05e8 \u05d0\u05d5\u05ea\u05d5: \u05de\u05e4\u05ea\u05d7\u05d9\u05dd \u05e8\u05d1\u05d9\u05dd \u05e0\u05ea\u05e7\u05dc\u05d9\u05dd \u05d1\u05d1\u05e2\u05d9\u05d4 \u05d1\u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8\u05d9 GUI \u05de\u05ea\u05d5\u05da Threads &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[5,10,11,13,16,17],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-3","tag-net","tag-dot-net","tag-gui","tag-multithreading","tag-stored-procedures","tag-threads"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p785UE-i","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18"}],"version-history":[{"count":0,"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.artifex.co.il\/he\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}